@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,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 };