@holoscript/framework 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ALL-test-results.json +1 -0
- package/CHANGELOG.md +8 -0
- package/LICENSE +21 -0
- package/ROADMAP.md +175 -0
- package/dist/AgentManifest-CB4xM-Ma.d.cts +704 -0
- package/dist/AgentManifest-CB4xM-Ma.d.ts +704 -0
- package/dist/BehaviorTree-BrBFECv5.d.cts +103 -0
- package/dist/BehaviorTree-BrBFECv5.d.ts +103 -0
- package/dist/InvisibleWallet-BB6tFvRA.d.cts +1732 -0
- package/dist/InvisibleWallet-rtRrBOA8.d.ts +1732 -0
- package/dist/OrchestratorAgent-BvWgf9uw.d.cts +798 -0
- package/dist/OrchestratorAgent-Q_CbVTmO.d.ts +798 -0
- package/dist/agents/index.cjs +4790 -0
- package/dist/agents/index.d.cts +1788 -0
- package/dist/agents/index.d.ts +1788 -0
- package/dist/agents/index.js +4695 -0
- package/dist/ai/index.cjs +5347 -0
- package/dist/ai/index.d.cts +1753 -0
- package/dist/ai/index.d.ts +1753 -0
- package/dist/ai/index.js +5244 -0
- package/dist/behavior.cjs +449 -0
- package/dist/behavior.d.cts +130 -0
- package/dist/behavior.d.ts +130 -0
- package/dist/behavior.js +407 -0
- package/dist/economy/index.cjs +3659 -0
- package/dist/economy/index.d.cts +747 -0
- package/dist/economy/index.d.ts +747 -0
- package/dist/economy/index.js +3617 -0
- package/dist/implementations-D9T3un9D.d.cts +236 -0
- package/dist/implementations-D9T3un9D.d.ts +236 -0
- package/dist/index.cjs +24550 -0
- package/dist/index.d.cts +1729 -0
- package/dist/index.d.ts +1729 -0
- package/dist/index.js +24277 -0
- package/dist/learning/index.cjs +219 -0
- package/dist/learning/index.d.cts +104 -0
- package/dist/learning/index.d.ts +104 -0
- package/dist/learning/index.js +189 -0
- package/dist/negotiation/index.cjs +970 -0
- package/dist/negotiation/index.d.cts +610 -0
- package/dist/negotiation/index.d.ts +610 -0
- package/dist/negotiation/index.js +931 -0
- package/dist/skills/index.cjs +1118 -0
- package/dist/skills/index.d.cts +289 -0
- package/dist/skills/index.d.ts +289 -0
- package/dist/skills/index.js +1079 -0
- package/dist/swarm/index.cjs +5268 -0
- package/dist/swarm/index.d.cts +2433 -0
- package/dist/swarm/index.d.ts +2433 -0
- package/dist/swarm/index.js +5221 -0
- package/dist/training/index.cjs +2745 -0
- package/dist/training/index.d.cts +1734 -0
- package/dist/training/index.d.ts +1734 -0
- package/dist/training/index.js +2687 -0
- package/extract-failures.js +10 -0
- package/package.json +82 -0
- package/src/__tests__/bounty-marketplace.test.ts +374 -0
- package/src/__tests__/delegation.test.ts +144 -0
- package/src/__tests__/distributed-claimer.test.ts +147 -0
- package/src/__tests__/done-log-audit.test.ts +342 -0
- package/src/__tests__/framework.test.ts +865 -0
- package/src/__tests__/goal-synthesizer.test.ts +236 -0
- package/src/__tests__/presence.test.ts +223 -0
- package/src/__tests__/protocol-agent.test.ts +254 -0
- package/src/__tests__/revenue-splitter.test.ts +114 -0
- package/src/__tests__/scenario-driven-todo.test.ts +197 -0
- package/src/__tests__/self-improve.test.ts +349 -0
- package/src/__tests__/service-lifecycle.test.ts +237 -0
- package/src/__tests__/skill-router.test.ts +121 -0
- package/src/agents/AgentManifest.ts +493 -0
- package/src/agents/AgentRegistry.ts +475 -0
- package/src/agents/AgentTypes.ts +585 -0
- package/src/agents/AgentWalletRegistry.ts +83 -0
- package/src/agents/AuthenticatedCRDT.ts +388 -0
- package/src/agents/CapabilityMatcher.ts +453 -0
- package/src/agents/CrossRealityHandoff.ts +305 -0
- package/src/agents/CulturalMemory.ts +454 -0
- package/src/agents/FederatedRegistryAdapter.ts +429 -0
- package/src/agents/NormEngine.ts +450 -0
- package/src/agents/OrchestratorAgent.ts +414 -0
- package/src/agents/SkillWorkflowEngine.ts +472 -0
- package/src/agents/TaskDelegationService.ts +551 -0
- package/src/agents/__tests__/AgentManifest.prod.test.ts +134 -0
- package/src/agents/__tests__/AgentManifest.test.ts +182 -0
- package/src/agents/__tests__/AgentModule.test.ts +864 -0
- package/src/agents/__tests__/AgentRegistry.prod.test.ts +125 -0
- package/src/agents/__tests__/AgentRegistry.test.ts +148 -0
- package/src/agents/__tests__/AgentTypes.test.ts +534 -0
- package/src/agents/__tests__/AgentWalletRegistry.test.ts +152 -0
- package/src/agents/__tests__/AuthenticatedCRDT.test.ts +558 -0
- package/src/agents/__tests__/CapabilityMatcher.prod.test.ts +117 -0
- package/src/agents/__tests__/CapabilityMatcher.test.ts +178 -0
- package/src/agents/__tests__/CrossRealityHandoff.test.ts +402 -0
- package/src/agents/__tests__/CulturalMemory.test.ts +200 -0
- package/src/agents/__tests__/FederatedRegistryAdapter.test.ts +409 -0
- package/src/agents/__tests__/NormEngine.test.ts +276 -0
- package/src/agents/__tests__/OrchestratorAgent.test.ts +182 -0
- package/src/agents/__tests__/SkillWorkflowEngine.test.ts +357 -0
- package/src/agents/__tests__/TaskDelegationService.test.ts +446 -0
- package/src/agents/index.ts +107 -0
- package/src/agents/spatial-comms/Layer1RealTime.ts +621 -0
- package/src/agents/spatial-comms/Layer2A2A.ts +661 -0
- package/src/agents/spatial-comms/Layer3MCP.ts +651 -0
- package/src/agents/spatial-comms/ProtocolTypes.ts +543 -0
- package/src/agents/spatial-comms/SpatialCommClient.ts +483 -0
- package/src/agents/spatial-comms/__tests__/performance-benchmark.test.ts +465 -0
- package/src/agents/spatial-comms/examples/multi-agent-world-creation.ts +409 -0
- package/src/agents/spatial-comms/index.ts +66 -0
- package/src/ai/AIAdapter.ts +313 -0
- package/src/ai/AICopilot.ts +331 -0
- package/src/ai/AIOutputValidator.ts +203 -0
- package/src/ai/BTNodes.ts +239 -0
- package/src/ai/BehaviorSelector.ts +135 -0
- package/src/ai/BehaviorTree.ts +153 -0
- package/src/ai/Blackboard.ts +165 -0
- package/src/ai/GenerationAnalytics.ts +461 -0
- package/src/ai/GenerationCache.ts +265 -0
- package/src/ai/GoalPlanner.ts +165 -0
- package/src/ai/HoloScriptGenerator.ts +580 -0
- package/src/ai/InfluenceMap.ts +180 -0
- package/src/ai/NavMesh.ts +168 -0
- package/src/ai/PerceptionSystem.ts +178 -0
- package/src/ai/PromptTemplates.ts +453 -0
- package/src/ai/SemanticSearchService.ts +80 -0
- package/src/ai/StateMachine.ts +196 -0
- package/src/ai/SteeringBehavior.ts +150 -0
- package/src/ai/SteeringBehaviors.ts +244 -0
- package/src/ai/TrainingDataGenerator.ts +1082 -0
- package/src/ai/UtilityAI.ts +145 -0
- package/src/ai/__tests__/AIAdapter.prod.test.ts +259 -0
- package/src/ai/__tests__/AIAdapter.test.ts +109 -0
- package/src/ai/__tests__/AICopilot.prod.test.ts +341 -0
- package/src/ai/__tests__/AICopilot.test.ts +178 -0
- package/src/ai/__tests__/AIOutputValidator.prod.test.ts +226 -0
- package/src/ai/__tests__/AIOutputValidator.test.ts +138 -0
- package/src/ai/__tests__/BTNodes.prod.test.ts +391 -0
- package/src/ai/__tests__/BTNodes.test.ts +263 -0
- package/src/ai/__tests__/BehaviorSelector.prod.test.ts +129 -0
- package/src/ai/__tests__/BehaviorSelector.test.ts +132 -0
- package/src/ai/__tests__/BehaviorTree.prod.test.ts +266 -0
- package/src/ai/__tests__/BehaviorTree.test.ts +216 -0
- package/src/ai/__tests__/Blackboard.prod.test.ts +339 -0
- package/src/ai/__tests__/Blackboard.test.ts +183 -0
- package/src/ai/__tests__/GenerationAnalytics.prod.test.ts +141 -0
- package/src/ai/__tests__/GenerationAnalytics.test.ts +165 -0
- package/src/ai/__tests__/GenerationCache.prod.test.ts +144 -0
- package/src/ai/__tests__/GenerationCache.test.ts +171 -0
- package/src/ai/__tests__/GoalPlanner.prod.test.ts +189 -0
- package/src/ai/__tests__/GoalPlanner.test.ts +137 -0
- package/src/ai/__tests__/GoalPlannerDepth.prod.test.ts +217 -0
- package/src/ai/__tests__/HoloScriptGenerator.test.ts +125 -0
- package/src/ai/__tests__/InfluenceMap.prod.test.ts +146 -0
- package/src/ai/__tests__/InfluenceMap.test.ts +149 -0
- package/src/ai/__tests__/NavMesh.prod.test.ts +141 -0
- package/src/ai/__tests__/NavMesh.test.ts +159 -0
- package/src/ai/__tests__/PerceptionSystem.prod.test.ts +135 -0
- package/src/ai/__tests__/PerceptionSystem.test.ts +250 -0
- package/src/ai/__tests__/PromptTemplates.prod.test.ts +313 -0
- package/src/ai/__tests__/PromptTemplates.test.ts +146 -0
- package/src/ai/__tests__/SemanticSearch.test.ts +37 -0
- package/src/ai/__tests__/StateMachine.prod.test.ts +162 -0
- package/src/ai/__tests__/StateMachine.test.ts +163 -0
- package/src/ai/__tests__/SteeringBehavior.prod.test.ts +251 -0
- package/src/ai/__tests__/SteeringBehavior.test.ts +135 -0
- package/src/ai/__tests__/SteeringBehaviors.prod.test.ts +133 -0
- package/src/ai/__tests__/SteeringBehaviors.test.ts +151 -0
- package/src/ai/__tests__/TrainingDataGenerator.prod.test.ts +286 -0
- package/src/ai/__tests__/TrainingDataGenerator.test.ts +286 -0
- package/src/ai/__tests__/UtilityAI.prod.test.ts +207 -0
- package/src/ai/__tests__/UtilityAI.test.ts +155 -0
- package/src/ai/__tests__/adapters.prod.test.ts +263 -0
- package/src/ai/__tests__/adapters.test.ts +320 -0
- package/src/ai/adapters.ts +1585 -0
- package/src/ai/index.ts +130 -0
- package/src/behavior/BehaviorPresets.ts +140 -0
- package/src/behavior/BehaviorTree.ts +236 -0
- package/src/behavior/StateMachine.ts +176 -0
- package/src/behavior/StateTrait.ts +67 -0
- package/src/behavior/index.ts +8 -0
- package/src/behavior.ts +8 -0
- package/src/board/audit.ts +284 -0
- package/src/board/board-ops.ts +336 -0
- package/src/board/board-types.ts +302 -0
- package/src/board/index.ts +69 -0
- package/src/define-agent.ts +46 -0
- package/src/define-team.ts +33 -0
- package/src/delegation.ts +265 -0
- package/src/distributed-claimer.ts +228 -0
- package/src/economy/AgentBudgetEnforcer.ts +464 -0
- package/src/economy/BountyManager.ts +185 -0
- package/src/economy/CreatorRevenueAggregator.ts +460 -0
- package/src/economy/InvisibleWallet.ts +82 -0
- package/src/economy/KnowledgeMarketplace.ts +193 -0
- package/src/economy/PaymentWebhookService.ts +512 -0
- package/src/economy/RevenueSplitter.ts +156 -0
- package/src/economy/SubscriptionManager.ts +546 -0
- package/src/economy/UnifiedBudgetOptimizer.ts +635 -0
- package/src/economy/UsageMeter.ts +440 -0
- package/src/economy/_core-stubs.ts +219 -0
- package/src/economy/index.ts +100 -0
- package/src/economy/x402-facilitator.ts +1978 -0
- package/src/index.ts +348 -0
- package/src/knowledge/__tests__/knowledge-consolidator.test.ts +444 -0
- package/src/knowledge/__tests__/knowledge-store-vector.test.ts +291 -0
- package/src/knowledge/brain.ts +167 -0
- package/src/knowledge/consolidation.ts +581 -0
- package/src/knowledge/knowledge-consolidator.ts +510 -0
- package/src/knowledge/knowledge-store.ts +616 -0
- package/src/learning/MemoryConsolidator.ts +102 -0
- package/src/learning/MemoryScorer.ts +69 -0
- package/src/learning/ProceduralCompiler.ts +45 -0
- package/src/learning/SemanticClusterer.ts +66 -0
- package/src/learning/index.ts +8 -0
- package/src/llm/llm-adapter.ts +159 -0
- package/src/mesh/index.ts +309 -0
- package/src/negotiation/NegotiationProtocol.ts +694 -0
- package/src/negotiation/NegotiationTypes.ts +473 -0
- package/src/negotiation/VotingMechanisms.ts +691 -0
- package/src/negotiation/index.ts +49 -0
- package/src/protocol/goal-synthesizer.ts +317 -0
- package/src/protocol/implementations.ts +474 -0
- package/src/protocol/micro-phase-decomposer.ts +299 -0
- package/src/protocol/micro-step-decomposer.test.ts +306 -0
- package/src/protocol-agent.test.ts +353 -0
- package/src/protocol-agent.ts +670 -0
- package/src/self-improve/absorb-scanner.ts +252 -0
- package/src/self-improve/evolution-engine.ts +149 -0
- package/src/self-improve/framework-absorber.ts +214 -0
- package/src/self-improve/index.ts +50 -0
- package/src/self-improve/prompt-optimizer.ts +212 -0
- package/src/self-improve/test-generator.ts +175 -0
- package/src/skill-router.ts +186 -0
- package/src/skills/index.ts +5 -0
- package/src/skills/skill-md-bridge.ts +1699 -0
- package/src/swarm/ACOEngine.ts +261 -0
- package/src/swarm/CollectiveIntelligence.ts +383 -0
- package/src/swarm/ContributionSynthesizer.ts +481 -0
- package/src/swarm/LeaderElection.ts +393 -0
- package/src/swarm/PSOEngine.ts +206 -0
- package/src/swarm/QuorumPolicy.ts +173 -0
- package/src/swarm/SwarmCoordinator.ts +335 -0
- package/src/swarm/SwarmManager.ts +442 -0
- package/src/swarm/SwarmMembership.ts +456 -0
- package/src/swarm/VotingRound.ts +255 -0
- package/src/swarm/__tests__/ACOEngine.prod.test.ts +164 -0
- package/src/swarm/__tests__/ACOEngine.test.ts +117 -0
- package/src/swarm/__tests__/CollectiveIntelligence.prod.test.ts +296 -0
- package/src/swarm/__tests__/CollectiveIntelligence.test.ts +457 -0
- package/src/swarm/__tests__/ContributionSynthesizer.prod.test.ts +269 -0
- package/src/swarm/__tests__/ContributionSynthesizer.test.ts +254 -0
- package/src/swarm/__tests__/LeaderElection.prod.test.ts +196 -0
- package/src/swarm/__tests__/LeaderElection.test.ts +151 -0
- package/src/swarm/__tests__/PSOEngine.prod.test.ts +162 -0
- package/src/swarm/__tests__/PSOEngine.test.ts +106 -0
- package/src/swarm/__tests__/QuorumPolicy.prod.test.ts +216 -0
- package/src/swarm/__tests__/QuorumPolicy.test.ts +177 -0
- package/src/swarm/__tests__/SwarmCoordinator.prod.test.ts +186 -0
- package/src/swarm/__tests__/SwarmCoordinator.test.ts +167 -0
- package/src/swarm/__tests__/SwarmManager.prod.test.ts +308 -0
- package/src/swarm/__tests__/SwarmManager.test.ts +373 -0
- package/src/swarm/__tests__/SwarmMembership.prod.test.ts +273 -0
- package/src/swarm/__tests__/SwarmMembership.test.ts +264 -0
- package/src/swarm/__tests__/VotingRound.prod.test.ts +233 -0
- package/src/swarm/__tests__/VotingRound.test.ts +174 -0
- package/src/swarm/analytics/SwarmInspector.ts +476 -0
- package/src/swarm/analytics/SwarmMetrics.ts +449 -0
- package/src/swarm/analytics/__tests__/SwarmInspector.prod.test.ts +366 -0
- package/src/swarm/analytics/__tests__/SwarmInspector.test.ts +454 -0
- package/src/swarm/analytics/__tests__/SwarmMetrics.prod.test.ts +254 -0
- package/src/swarm/analytics/__tests__/SwarmMetrics.test.ts +370 -0
- package/src/swarm/analytics/index.ts +7 -0
- package/src/swarm/index.ts +69 -0
- package/src/swarm/messaging/BroadcastChannel.ts +509 -0
- package/src/swarm/messaging/GossipProtocol.ts +565 -0
- package/src/swarm/messaging/SwarmEventBus.ts +443 -0
- package/src/swarm/messaging/__tests__/BroadcastChannel.prod.test.ts +331 -0
- package/src/swarm/messaging/__tests__/BroadcastChannel.test.ts +333 -0
- package/src/swarm/messaging/__tests__/GossipProtocol.prod.test.ts +356 -0
- package/src/swarm/messaging/__tests__/GossipProtocol.test.ts +437 -0
- package/src/swarm/messaging/__tests__/SwarmEventBus.prod.test.ts +191 -0
- package/src/swarm/messaging/__tests__/SwarmEventBus.test.ts +247 -0
- package/src/swarm/messaging/index.ts +8 -0
- package/src/swarm/spatial/FlockingBehavior.ts +462 -0
- package/src/swarm/spatial/FormationController.ts +500 -0
- package/src/swarm/spatial/Vector3.ts +170 -0
- package/src/swarm/spatial/ZoneClaiming.ts +509 -0
- package/src/swarm/spatial/__tests__/FlockingBehavior.prod.test.ts +239 -0
- package/src/swarm/spatial/__tests__/FlockingBehavior.test.ts +298 -0
- package/src/swarm/spatial/__tests__/FormationController.prod.test.ts +240 -0
- package/src/swarm/spatial/__tests__/FormationController.test.ts +297 -0
- package/src/swarm/spatial/__tests__/Vector3.prod.test.ts +283 -0
- package/src/swarm/spatial/__tests__/Vector3.test.ts +224 -0
- package/src/swarm/spatial/__tests__/ZoneClaiming.prod.test.ts +246 -0
- package/src/swarm/spatial/__tests__/ZoneClaiming.test.ts +374 -0
- package/src/swarm/spatial/index.ts +28 -0
- package/src/team.ts +1245 -0
- package/src/training/LRScheduler.ts +377 -0
- package/src/training/QualityScoringPipeline.ts +139 -0
- package/src/training/SoftDedup.ts +461 -0
- package/src/training/SparsityMonitor.ts +685 -0
- package/src/training/SparsityMonitorTypes.ts +209 -0
- package/src/training/SpatialTrainingDataGenerator.ts +1526 -0
- package/src/training/SpatialTrainingDataTypes.ts +216 -0
- package/src/training/TrainingPipelineConfig.ts +215 -0
- package/src/training/constants.ts +94 -0
- package/src/training/index.ts +138 -0
- package/src/training/schema.ts +147 -0
- package/src/training/scripts/generate-novel-use-cases-dataset.ts +272 -0
- package/src/training/scripts/generate-spatial-dataset.ts +521 -0
- package/src/training/training/data/novel-use-cases.jsonl +153 -0
- package/src/training/training/data/spatial-reasoning-10k.jsonl +9354 -0
- package/src/training/trainingmonkey/TrainingMonkeyIntegration.ts +477 -0
- package/src/training/trainingmonkey/TrainingMonkeyTypes.ts +230 -0
- package/src/training/trainingmonkey/index.ts +26 -0
- package/src/training/trait-mappings.ts +157 -0
- package/src/types/core-stubs.d.ts +113 -0
- package/src/types.ts +304 -0
- package/test-output.txt +0 -0
- package/test-result.json +1 -0
- package/tsc-errors.txt +4 -0
- package/tsc_output.txt +0 -0
- package/tsconfig.json +14 -0
- package/tsup-learning-esm.config.ts +12 -0
- package/tsup.config.ts +21 -0
- package/typescript-errors-2.txt +0 -0
- package/typescript-errors.txt +22 -0
- package/vitest-log-utf8.txt +268 -0
- package/vitest-log.txt +0 -0
- package/vitest.config.ts +8 -0
|
@@ -0,0 +1,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
|
+
}
|