@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,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @holoscript/core - Negotiation Module
|
|
3
|
+
*
|
|
4
|
+
* Multi-agent negotiation and consensus building system.
|
|
5
|
+
* Part of HoloScript v3.1 Agentic Choreography.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// Negotiation Types
|
|
9
|
+
export {
|
|
10
|
+
type NegotiationStatus,
|
|
11
|
+
type VotingMechanism,
|
|
12
|
+
type TieBreaker,
|
|
13
|
+
type ResolutionOutcome,
|
|
14
|
+
type ProposalStatus,
|
|
15
|
+
type NegotiationConfig,
|
|
16
|
+
type Proposal,
|
|
17
|
+
type ProposalInput,
|
|
18
|
+
type Vote,
|
|
19
|
+
type VoteInput,
|
|
20
|
+
type VoteTally,
|
|
21
|
+
type Resolution,
|
|
22
|
+
type NegotiationSession,
|
|
23
|
+
type InitiateOptions,
|
|
24
|
+
type NegotiationEvents,
|
|
25
|
+
} from './NegotiationTypes';
|
|
26
|
+
|
|
27
|
+
// Voting Mechanisms
|
|
28
|
+
export {
|
|
29
|
+
type VotingResult,
|
|
30
|
+
type VotingHandler,
|
|
31
|
+
majorityHandler,
|
|
32
|
+
supermajorityHandler,
|
|
33
|
+
weightedHandler,
|
|
34
|
+
consensusHandler,
|
|
35
|
+
rankedHandler,
|
|
36
|
+
approvalHandler,
|
|
37
|
+
bordaHandler,
|
|
38
|
+
getVotingHandler,
|
|
39
|
+
checkQuorum,
|
|
40
|
+
getTrustWeight,
|
|
41
|
+
} from './VotingMechanisms';
|
|
42
|
+
|
|
43
|
+
// Negotiation Protocol
|
|
44
|
+
export {
|
|
45
|
+
type AuditEntry,
|
|
46
|
+
NegotiationProtocol,
|
|
47
|
+
getNegotiationProtocol,
|
|
48
|
+
resetNegotiationProtocol,
|
|
49
|
+
} from './NegotiationProtocol';
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GoalSynthesizer — Autonomous goal generation from context
|
|
3
|
+
*
|
|
4
|
+
* When a team's board is empty, agents should not idle. This module
|
|
5
|
+
* synthesizes goals from knowledge store context, recent activity,
|
|
6
|
+
* and domain expertise using an LLM (when available) or falling back
|
|
7
|
+
* to heuristic goal generation.
|
|
8
|
+
*
|
|
9
|
+
* Absorbed from @holoscript/agent-protocol per FW-0.2.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { KnowledgeInsight, ModelConfig } from '../types';
|
|
13
|
+
import type { KnowledgeStore, StoredEntry } from '../knowledge/knowledge-store';
|
|
14
|
+
import { callLLM } from '../llm/llm-adapter';
|
|
15
|
+
import type { LLMMessage } from '../llm/llm-adapter';
|
|
16
|
+
import type { Goal } from './implementations';
|
|
17
|
+
|
|
18
|
+
// ── Types ──
|
|
19
|
+
|
|
20
|
+
export interface GoalContext {
|
|
21
|
+
/** Agent's primary domain (e.g. 'coding', 'research', 'security') */
|
|
22
|
+
domain: string;
|
|
23
|
+
/** Recent knowledge entries for context */
|
|
24
|
+
recentKnowledge?: StoredEntry[];
|
|
25
|
+
/** Recent completed task titles for dedup */
|
|
26
|
+
recentCompletedTasks?: string[];
|
|
27
|
+
/** Team name for context */
|
|
28
|
+
teamName?: string;
|
|
29
|
+
/** Agent name for personalization */
|
|
30
|
+
agentName?: string;
|
|
31
|
+
/** Agent capabilities */
|
|
32
|
+
capabilities?: string[];
|
|
33
|
+
/** Additional context to inject into the LLM prompt */
|
|
34
|
+
additionalContext?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface SynthesizedGoal extends Goal {
|
|
38
|
+
/** Rationale explaining why this goal was chosen */
|
|
39
|
+
rationale: string;
|
|
40
|
+
/** Relevance score 0-1 based on context alignment */
|
|
41
|
+
relevanceScore: number;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ── Fallback goal templates (used when LLM is unavailable) ──
|
|
45
|
+
|
|
46
|
+
const GENERIC_GOALS = [
|
|
47
|
+
'Analyze accumulated wisdom for contradictions',
|
|
48
|
+
'Refactor internal pattern database for efficiency',
|
|
49
|
+
'Explore adjacent domain knowledge',
|
|
50
|
+
'Review recent failures and simulate alternative outcomes',
|
|
51
|
+
'Update self-documentation and capability manifest',
|
|
52
|
+
'Ping other agents for potential collaboration',
|
|
53
|
+
'Optimize internal decision weights',
|
|
54
|
+
'Study historical logs for anomaly detection',
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
const DOMAIN_GOALS: Record<string, string[]> = {
|
|
58
|
+
coding: [
|
|
59
|
+
'Refactor legacy modules in the codebase',
|
|
60
|
+
'Write unit tests for untested components',
|
|
61
|
+
'Research new design patterns applicable to current architecture',
|
|
62
|
+
'Audit dependencies for security vulnerabilities',
|
|
63
|
+
'Profile and optimize hot code paths',
|
|
64
|
+
],
|
|
65
|
+
research: [
|
|
66
|
+
'Survey recent papers in the domain',
|
|
67
|
+
'Cross-reference findings across knowledge domains',
|
|
68
|
+
'Identify gaps in current knowledge coverage',
|
|
69
|
+
'Synthesize contradictory findings into unified model',
|
|
70
|
+
'Map emerging trends and their implications',
|
|
71
|
+
],
|
|
72
|
+
security: [
|
|
73
|
+
'Audit access control policies for gaps',
|
|
74
|
+
'Review cryptographic implementations for weaknesses',
|
|
75
|
+
'Scan for hardcoded credentials or secrets',
|
|
76
|
+
'Update threat model with recent attack vectors',
|
|
77
|
+
'Verify rate limiting and abuse prevention measures',
|
|
78
|
+
],
|
|
79
|
+
reviewer: [
|
|
80
|
+
'Review recent changes for architectural consistency',
|
|
81
|
+
'Check test coverage for recently modified modules',
|
|
82
|
+
'Audit error handling patterns across the codebase',
|
|
83
|
+
'Verify documentation matches implementation',
|
|
84
|
+
'Identify code duplication opportunities',
|
|
85
|
+
],
|
|
86
|
+
testing: [
|
|
87
|
+
'Create automated integration test for recent scenarios',
|
|
88
|
+
'Design fuzzing scenarios for core protocol serializers',
|
|
89
|
+
'Update legacy snapshots with modern state data',
|
|
90
|
+
'Verify deterministic behavior of CRDT synchronization',
|
|
91
|
+
'Set up load-testing harness for agent autonomous loop',
|
|
92
|
+
],
|
|
93
|
+
architecture: [
|
|
94
|
+
'Analyze service boundaries for proper decoupling',
|
|
95
|
+
'Evaluate event schemas against backward compatibility',
|
|
96
|
+
'Design migration path for deprecated APIs',
|
|
97
|
+
'Document implicit domain knowledge into architecture guidelines',
|
|
98
|
+
'Evaluate storage engine scalability under node churn',
|
|
99
|
+
],
|
|
100
|
+
performance: [
|
|
101
|
+
'Profile and optimize hot code paths',
|
|
102
|
+
'Reduce bundle size or optimize build times',
|
|
103
|
+
'Identify and resolve memory leaks in background daemon',
|
|
104
|
+
'Benchmark network latency in cross-region mesh',
|
|
105
|
+
],
|
|
106
|
+
devops: [
|
|
107
|
+
'Review and refine CI/CD pipeline efficiency',
|
|
108
|
+
'Automate environment provisioning for local scenario tests',
|
|
109
|
+
'Evaluate telemetry logging cardinality and storage costs',
|
|
110
|
+
]
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// ── GoalSynthesizer ──
|
|
114
|
+
|
|
115
|
+
export class GoalSynthesizer {
|
|
116
|
+
private llmConfig: ModelConfig | null;
|
|
117
|
+
private knowledgeStore: KnowledgeStore | null;
|
|
118
|
+
|
|
119
|
+
constructor(opts?: { llm?: ModelConfig; knowledge?: KnowledgeStore }) {
|
|
120
|
+
this.llmConfig = opts?.llm ?? null;
|
|
121
|
+
this.knowledgeStore = opts?.knowledge ?? null;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Synthesize goals from context. Uses LLM when available, falls back to heuristics.
|
|
126
|
+
* Returns goals ranked by relevance.
|
|
127
|
+
*/
|
|
128
|
+
async synthesizeMultiple(
|
|
129
|
+
context: GoalContext,
|
|
130
|
+
count = 3
|
|
131
|
+
): Promise<SynthesizedGoal[]> {
|
|
132
|
+
// Gather knowledge context
|
|
133
|
+
const knowledgeEntries = context.recentKnowledge ?? this.queryKnowledge(context.domain);
|
|
134
|
+
|
|
135
|
+
// Try LLM-based synthesis first
|
|
136
|
+
if (this.llmConfig) {
|
|
137
|
+
try {
|
|
138
|
+
return await this.synthesizeWithLLM(context, knowledgeEntries, count);
|
|
139
|
+
} catch {
|
|
140
|
+
// Fall through to heuristic
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Heuristic fallback
|
|
145
|
+
return this.synthesizeHeuristic(context, knowledgeEntries, count);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Synthesize a single goal. Backward-compatible with the original API.
|
|
150
|
+
*/
|
|
151
|
+
synthesize(
|
|
152
|
+
agentDomain: string = 'general',
|
|
153
|
+
source: Goal['source'] = 'autonomous-boredom'
|
|
154
|
+
): Goal {
|
|
155
|
+
const goals = this.synthesizeHeuristic(
|
|
156
|
+
{ domain: agentDomain },
|
|
157
|
+
[],
|
|
158
|
+
1
|
|
159
|
+
);
|
|
160
|
+
if (goals.length > 0) {
|
|
161
|
+
return { ...goals[0], source };
|
|
162
|
+
}
|
|
163
|
+
// Ultimate fallback
|
|
164
|
+
const description = GENERIC_GOALS[Math.floor(Math.random() * GENERIC_GOALS.length)];
|
|
165
|
+
return {
|
|
166
|
+
id: `GOAL-${Date.now().toString(36)}`,
|
|
167
|
+
description,
|
|
168
|
+
category: 'self-improvement',
|
|
169
|
+
priority: 'low',
|
|
170
|
+
estimatedComplexity: Math.floor(Math.random() * 5) + 1,
|
|
171
|
+
generatedAt: new Date().toISOString(),
|
|
172
|
+
source,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// ── Private ──
|
|
177
|
+
|
|
178
|
+
private queryKnowledge(domain: string): StoredEntry[] {
|
|
179
|
+
if (!this.knowledgeStore) return [];
|
|
180
|
+
try {
|
|
181
|
+
return this.knowledgeStore.search(domain, 5);
|
|
182
|
+
} catch {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
private async synthesizeWithLLM(
|
|
188
|
+
context: GoalContext,
|
|
189
|
+
knowledge: StoredEntry[],
|
|
190
|
+
count: number
|
|
191
|
+
): Promise<SynthesizedGoal[]> {
|
|
192
|
+
const knowledgeContext = knowledge.length > 0
|
|
193
|
+
? knowledge.map(k => `[${k.type}] ${k.content}`).join('\n')
|
|
194
|
+
: 'No relevant knowledge entries found.';
|
|
195
|
+
|
|
196
|
+
const recentTasks = context.recentCompletedTasks?.length
|
|
197
|
+
? context.recentCompletedTasks.slice(0, 10).join('\n- ')
|
|
198
|
+
: 'None';
|
|
199
|
+
|
|
200
|
+
const systemPrompt = [
|
|
201
|
+
`You are a goal synthesizer for an autonomous AI agent team.`,
|
|
202
|
+
`The agent "${context.agentName ?? 'unknown'}" operates in the "${context.domain}" domain.`,
|
|
203
|
+
context.capabilities?.length
|
|
204
|
+
? `Agent capabilities: ${context.capabilities.join(', ')}`
|
|
205
|
+
: '',
|
|
206
|
+
context.teamName ? `Team: ${context.teamName}` : '',
|
|
207
|
+
``,
|
|
208
|
+
`Your job: propose ${count} actionable goals the agent should pursue autonomously.`,
|
|
209
|
+
`Goals should be specific, achievable, and build on existing knowledge.`,
|
|
210
|
+
`Avoid duplicating recently completed tasks.`,
|
|
211
|
+
].filter(Boolean).join('\n');
|
|
212
|
+
|
|
213
|
+
const userPrompt = [
|
|
214
|
+
`## Knowledge Context`,
|
|
215
|
+
knowledgeContext,
|
|
216
|
+
``,
|
|
217
|
+
`## Recently Completed Tasks`,
|
|
218
|
+
`- ${recentTasks}`,
|
|
219
|
+
context.additionalContext ? `\n## Additional Context\n${context.additionalContext}` : '',
|
|
220
|
+
``,
|
|
221
|
+
`## Instructions`,
|
|
222
|
+
`Propose exactly ${count} goals. For each, respond in this JSON format:`,
|
|
223
|
+
`[{"description": "...", "category": "...", "priority": "low|medium|high", "rationale": "...", "estimatedComplexity": 1-5}]`,
|
|
224
|
+
``,
|
|
225
|
+
`Respond with ONLY the JSON array, no markdown fences.`,
|
|
226
|
+
].filter(Boolean).join('\n');
|
|
227
|
+
|
|
228
|
+
const messages: LLMMessage[] = [
|
|
229
|
+
{ role: 'system', content: systemPrompt },
|
|
230
|
+
{ role: 'user', content: userPrompt },
|
|
231
|
+
];
|
|
232
|
+
|
|
233
|
+
const response = await callLLM(this.llmConfig!, messages, {
|
|
234
|
+
maxTokens: 1024,
|
|
235
|
+
temperature: 0.8,
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
return this.parseLLMGoals(response.content, context, count);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
private parseLLMGoals(
|
|
242
|
+
content: string,
|
|
243
|
+
context: GoalContext,
|
|
244
|
+
count: number
|
|
245
|
+
): SynthesizedGoal[] {
|
|
246
|
+
try {
|
|
247
|
+
// Strip markdown fences if present
|
|
248
|
+
const cleaned = content.replace(/```(?:json)?\s*\n?/g, '').trim();
|
|
249
|
+
const parsed = JSON.parse(cleaned) as Array<{
|
|
250
|
+
description: string;
|
|
251
|
+
category?: string;
|
|
252
|
+
priority?: 'low' | 'medium' | 'high';
|
|
253
|
+
rationale?: string;
|
|
254
|
+
estimatedComplexity?: number;
|
|
255
|
+
}>;
|
|
256
|
+
|
|
257
|
+
if (!Array.isArray(parsed)) return this.synthesizeHeuristic(context, [], count);
|
|
258
|
+
|
|
259
|
+
return parsed.slice(0, count).map((g, i) => ({
|
|
260
|
+
id: `GOAL-${Date.now().toString(36)}-${i}`,
|
|
261
|
+
description: g.description || 'Explore new opportunities',
|
|
262
|
+
category: g.category || 'self-improvement',
|
|
263
|
+
priority: g.priority || 'medium',
|
|
264
|
+
estimatedComplexity: Math.min(5, Math.max(1, g.estimatedComplexity ?? 3)),
|
|
265
|
+
generatedAt: new Date().toISOString(),
|
|
266
|
+
source: 'autonomous-boredom' as const,
|
|
267
|
+
rationale: g.rationale || 'LLM-generated goal based on context',
|
|
268
|
+
relevanceScore: 1 - (i * 0.1), // rank order from LLM
|
|
269
|
+
}));
|
|
270
|
+
} catch {
|
|
271
|
+
return this.synthesizeHeuristic(context, [], count);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
private synthesizeHeuristic(
|
|
276
|
+
context: GoalContext,
|
|
277
|
+
knowledge: StoredEntry[],
|
|
278
|
+
count: number
|
|
279
|
+
): SynthesizedGoal[] {
|
|
280
|
+
const completedSet = new Set(
|
|
281
|
+
(context.recentCompletedTasks ?? []).map(t => t.toLowerCase().trim())
|
|
282
|
+
);
|
|
283
|
+
|
|
284
|
+
// Build candidate pool from domain + generic goals
|
|
285
|
+
const domainGoals = DOMAIN_GOALS[context.domain] ?? [];
|
|
286
|
+
const candidates = [...domainGoals, ...GENERIC_GOALS];
|
|
287
|
+
|
|
288
|
+
// If we have knowledge, generate knowledge-derived goals
|
|
289
|
+
const knowledgeGoals = knowledge
|
|
290
|
+
.filter(k => k.type === 'gotcha')
|
|
291
|
+
.map(k => `Investigate and resolve: ${k.content.slice(0, 120)}`);
|
|
292
|
+
|
|
293
|
+
const allCandidates = [...knowledgeGoals, ...candidates]
|
|
294
|
+
.filter(desc => !completedSet.has(desc.toLowerCase().trim()));
|
|
295
|
+
|
|
296
|
+
// Shuffle and pick
|
|
297
|
+
const shuffled = allCandidates.sort(() => Math.random() - 0.5);
|
|
298
|
+
const selected = shuffled.slice(0, count);
|
|
299
|
+
|
|
300
|
+
return selected.map((description, i) => ({
|
|
301
|
+
id: `GOAL-${Date.now().toString(36)}-${i}`,
|
|
302
|
+
description,
|
|
303
|
+
category: knowledgeGoals.includes(description) ? 'knowledge-gap' : 'self-improvement',
|
|
304
|
+
priority: (i === 0 ? 'medium' : 'low') as 'low' | 'medium' | 'high',
|
|
305
|
+
estimatedComplexity: Math.floor(Math.random() * 4) + 1,
|
|
306
|
+
generatedAt: new Date().toISOString(),
|
|
307
|
+
source: 'autonomous-boredom' as const,
|
|
308
|
+
rationale: knowledgeGoals.includes(description)
|
|
309
|
+
? 'Derived from knowledge store gotcha entries'
|
|
310
|
+
: `Heuristic goal for ${context.domain} domain`,
|
|
311
|
+
relevanceScore: Math.max(0.3, 1 - (i * 0.2)),
|
|
312
|
+
}));
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/** Exported domain goals for testing */
|
|
317
|
+
export { GENERIC_GOALS, DOMAIN_GOALS };
|