@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,585 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @holoscript/core - Agent Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Shared types for the HoloScript Agent Framework.
|
|
5
|
+
* Defines the 7-phase uAA2++ protocol and agent capabilities.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// PHASE DEFINITIONS
|
|
10
|
+
// ============================================================================
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The 7 phases of the uAA2++ protocol
|
|
14
|
+
*/
|
|
15
|
+
export type AgentPhase =
|
|
16
|
+
| 'INTAKE' // Phase 0: Gather data and context
|
|
17
|
+
| 'REFLECT' // Phase 1: Analyze and understand
|
|
18
|
+
| 'EXECUTE' // Phase 2: Take action
|
|
19
|
+
| 'COMPRESS' // Phase 3: Store knowledge efficiently
|
|
20
|
+
| 'REINTAKE' // Phase 4: Re-evaluate with compressed knowledge
|
|
21
|
+
| 'GROW' // Phase 5: Learn and improve
|
|
22
|
+
| 'EVOLVE'; // Phase 6: Adapt and optimize
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Phase execution order
|
|
26
|
+
*/
|
|
27
|
+
export const PHASE_ORDER: readonly AgentPhase[] = [
|
|
28
|
+
'INTAKE',
|
|
29
|
+
'REFLECT',
|
|
30
|
+
'EXECUTE',
|
|
31
|
+
'COMPRESS',
|
|
32
|
+
'REINTAKE',
|
|
33
|
+
'GROW',
|
|
34
|
+
'EVOLVE',
|
|
35
|
+
] as const;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Default phase timings (milliseconds)
|
|
39
|
+
*/
|
|
40
|
+
export const DEFAULT_PHASE_TIMINGS: Record<AgentPhase, number> = {
|
|
41
|
+
INTAKE: 1000,
|
|
42
|
+
REFLECT: 2000,
|
|
43
|
+
EXECUTE: 5000,
|
|
44
|
+
COMPRESS: 1000,
|
|
45
|
+
REINTAKE: 1000,
|
|
46
|
+
GROW: 2000,
|
|
47
|
+
EVOLVE: 1000,
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// PHASE RESULTS
|
|
52
|
+
// ============================================================================
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Base result for all phases
|
|
56
|
+
*/
|
|
57
|
+
export interface PhaseResult {
|
|
58
|
+
success: boolean;
|
|
59
|
+
phase: AgentPhase;
|
|
60
|
+
duration_ms: number;
|
|
61
|
+
error?: string;
|
|
62
|
+
data?: Record<string, unknown>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* INTAKE phase result
|
|
67
|
+
*/
|
|
68
|
+
export interface IntakeResult extends PhaseResult {
|
|
69
|
+
phase: 'INTAKE';
|
|
70
|
+
sources: string[];
|
|
71
|
+
items_loaded: number;
|
|
72
|
+
data?: {
|
|
73
|
+
knowledge?: Record<string, unknown>;
|
|
74
|
+
patterns?: unknown[];
|
|
75
|
+
wisdom?: unknown[];
|
|
76
|
+
gotchas?: unknown[];
|
|
77
|
+
context?: Record<string, unknown>;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* REFLECT phase result
|
|
83
|
+
*/
|
|
84
|
+
export interface ReflectResult extends PhaseResult {
|
|
85
|
+
phase: 'REFLECT';
|
|
86
|
+
analysis_depth: 'shallow' | 'medium' | 'deep';
|
|
87
|
+
insights_generated: number;
|
|
88
|
+
data?: {
|
|
89
|
+
ai_context?: string;
|
|
90
|
+
decision_criteria?: Record<string, unknown>;
|
|
91
|
+
priorities?: string[];
|
|
92
|
+
risks?: string[];
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* EXECUTE phase result
|
|
98
|
+
*/
|
|
99
|
+
export interface ExecuteResult extends PhaseResult {
|
|
100
|
+
phase: 'EXECUTE';
|
|
101
|
+
actions_taken: number;
|
|
102
|
+
deliverables: string[];
|
|
103
|
+
data?: {
|
|
104
|
+
outputs?: unknown[];
|
|
105
|
+
side_effects?: string[];
|
|
106
|
+
metrics?: Record<string, number>;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* COMPRESS phase result
|
|
112
|
+
*/
|
|
113
|
+
export interface CompressResult extends PhaseResult {
|
|
114
|
+
phase: 'COMPRESS';
|
|
115
|
+
compression_ratio: number;
|
|
116
|
+
tokens_saved: number;
|
|
117
|
+
data?: {
|
|
118
|
+
compressed_knowledge?: string;
|
|
119
|
+
symbol_mappings?: Record<string, string>;
|
|
120
|
+
patterns_extracted?: string[];
|
|
121
|
+
wisdom_extracted?: string[];
|
|
122
|
+
gotchas_captured?: string[];
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* REINTAKE phase result
|
|
128
|
+
*/
|
|
129
|
+
export interface ReintakeResult extends PhaseResult {
|
|
130
|
+
phase: 'REINTAKE';
|
|
131
|
+
items_refreshed: number;
|
|
132
|
+
effectiveness: number; // 0-1
|
|
133
|
+
data?: {
|
|
134
|
+
merged_knowledge?: Record<string, unknown>;
|
|
135
|
+
conflicts_resolved?: number;
|
|
136
|
+
new_insights?: string[];
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* GROW phase result
|
|
142
|
+
*/
|
|
143
|
+
export interface GrowResult extends PhaseResult {
|
|
144
|
+
phase: 'GROW';
|
|
145
|
+
patterns_learned: number;
|
|
146
|
+
wisdom_gained: number;
|
|
147
|
+
gotchas_captured: number;
|
|
148
|
+
data?: {
|
|
149
|
+
new_patterns?: Array<{ id: string; name: string; confidence: number }>;
|
|
150
|
+
new_wisdom?: Array<{ id: string; content: string; domain: string }>;
|
|
151
|
+
new_gotchas?: Array<{ id: string; trigger: string; avoidance: string }>;
|
|
152
|
+
capability_score_delta?: number;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* EVOLVE phase result
|
|
158
|
+
*/
|
|
159
|
+
export interface EvolveResult extends PhaseResult {
|
|
160
|
+
phase: 'EVOLVE';
|
|
161
|
+
evolution_level: number;
|
|
162
|
+
traits_activated: string[];
|
|
163
|
+
traits_deactivated: string[];
|
|
164
|
+
data?: {
|
|
165
|
+
new_capabilities?: string[];
|
|
166
|
+
optimizations_applied?: string[];
|
|
167
|
+
efficiency_improvement?: number;
|
|
168
|
+
next_evolution_threshold?: number;
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Union type for all phase results
|
|
174
|
+
*/
|
|
175
|
+
export type AnyPhaseResult =
|
|
176
|
+
| IntakeResult
|
|
177
|
+
| ReflectResult
|
|
178
|
+
| ExecuteResult
|
|
179
|
+
| CompressResult
|
|
180
|
+
| ReintakeResult
|
|
181
|
+
| GrowResult
|
|
182
|
+
| EvolveResult;
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Complete cycle result
|
|
186
|
+
*/
|
|
187
|
+
export interface CycleResult {
|
|
188
|
+
cycle_number: number;
|
|
189
|
+
success: boolean;
|
|
190
|
+
total_duration_ms: number;
|
|
191
|
+
phases: {
|
|
192
|
+
intake?: IntakeResult;
|
|
193
|
+
reflect?: ReflectResult;
|
|
194
|
+
execute?: ExecuteResult;
|
|
195
|
+
compress?: CompressResult;
|
|
196
|
+
reintake?: ReintakeResult;
|
|
197
|
+
grow?: GrowResult;
|
|
198
|
+
evolve?: EvolveResult;
|
|
199
|
+
};
|
|
200
|
+
learnings: {
|
|
201
|
+
patterns: number;
|
|
202
|
+
wisdom: number;
|
|
203
|
+
gotchas: number;
|
|
204
|
+
};
|
|
205
|
+
evolution_delta: number;
|
|
206
|
+
timestamp: string;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// ============================================================================
|
|
210
|
+
// AGENT CONFIGURATION
|
|
211
|
+
// ============================================================================
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Agent category classification
|
|
215
|
+
*/
|
|
216
|
+
export type AgentCategory =
|
|
217
|
+
| 'trading'
|
|
218
|
+
| 'analysis'
|
|
219
|
+
| 'optimization'
|
|
220
|
+
| 'monitoring'
|
|
221
|
+
| 'creative'
|
|
222
|
+
| 'management'
|
|
223
|
+
| 'strategic'
|
|
224
|
+
| 'assistant'
|
|
225
|
+
| 'orchestrator'
|
|
226
|
+
| 'quest_creator'
|
|
227
|
+
| 'librarian'
|
|
228
|
+
| 'twin_manager'
|
|
229
|
+
| 'payment_handler'
|
|
230
|
+
| 'autonomous';
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Agent position in the Lotus Flower Architecture
|
|
234
|
+
*/
|
|
235
|
+
export type AgentPosition =
|
|
236
|
+
| 'center' // Core coordinator (CEO)
|
|
237
|
+
| 'inner-circle' // High-trust advisors
|
|
238
|
+
| 'main-petal' // Primary executors
|
|
239
|
+
| 'inner-petal' // Specialist agents
|
|
240
|
+
| 'supportive' // Helper agents
|
|
241
|
+
| 'background' // Background processors
|
|
242
|
+
| 'infrastructure'; // System services
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Agent orchestral section (musical metaphor)
|
|
246
|
+
*/
|
|
247
|
+
export type AgentSection =
|
|
248
|
+
| 'strings' // Foundation & harmony
|
|
249
|
+
| 'woodwinds' // Melody & nuance
|
|
250
|
+
| 'brass' // Power & announcements
|
|
251
|
+
| 'percussion' // Rhythm & timing
|
|
252
|
+
| 'keyboard' // Versatility & support
|
|
253
|
+
| 'vocal'; // Communication & expression
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Architecture awareness metadata
|
|
257
|
+
*/
|
|
258
|
+
export interface ArchitectureAwareness {
|
|
259
|
+
position: AgentPosition;
|
|
260
|
+
section?: AgentSection;
|
|
261
|
+
role: string;
|
|
262
|
+
visualizationDoc?: string;
|
|
263
|
+
musicPatterns?: {
|
|
264
|
+
interval: 'I' | 'II' | 'III' | 'IV' | 'V' | 'VI' | 'VII' | 'VIII';
|
|
265
|
+
formRole: 'exposition' | 'development' | 'recapitulation' | 'coda' | 'refrain';
|
|
266
|
+
pulse: 'strong' | 'weak' | 'syncopated';
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Phase configuration overrides
|
|
272
|
+
*/
|
|
273
|
+
export interface PhaseConfig {
|
|
274
|
+
enabled?: boolean;
|
|
275
|
+
timeout_ms?: number;
|
|
276
|
+
retries?: number;
|
|
277
|
+
parallel?: boolean;
|
|
278
|
+
dependencies?: AgentPhase[];
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Curiosity configuration (what's next?)
|
|
283
|
+
*/
|
|
284
|
+
export interface CuriosityConfig {
|
|
285
|
+
enabled: boolean;
|
|
286
|
+
depth: 'shallow' | 'medium' | 'deep';
|
|
287
|
+
sources: Array<'todo' | 'handoff' | 'codebase' | 'related' | 'improvement' | 'pattern'>;
|
|
288
|
+
auto_continue: boolean;
|
|
289
|
+
max_results: number;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Budget configuration for runaway prevention
|
|
294
|
+
*/
|
|
295
|
+
export interface BudgetConfig {
|
|
296
|
+
max_tokens_per_cycle: number;
|
|
297
|
+
max_duration_ms: number;
|
|
298
|
+
max_actions_per_minute: number;
|
|
299
|
+
max_consecutive_failures: number;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Complete agent configuration
|
|
304
|
+
*/
|
|
305
|
+
export interface AgentConfig {
|
|
306
|
+
// Identity
|
|
307
|
+
agent_id: string;
|
|
308
|
+
agent_name: string;
|
|
309
|
+
agent_type: string;
|
|
310
|
+
categories: AgentCategory[];
|
|
311
|
+
|
|
312
|
+
// Architecture
|
|
313
|
+
architecture?: ArchitectureAwareness;
|
|
314
|
+
|
|
315
|
+
// Phase configuration
|
|
316
|
+
phases?: Partial<Record<AgentPhase, PhaseConfig>>;
|
|
317
|
+
phase_timings?: Partial<Record<AgentPhase, number>>;
|
|
318
|
+
enabled_phases?: AgentPhase[];
|
|
319
|
+
auto_transition?: boolean;
|
|
320
|
+
|
|
321
|
+
// Behavior
|
|
322
|
+
curiosity?: Partial<CuriosityConfig>;
|
|
323
|
+
budget?: Partial<BudgetConfig>;
|
|
324
|
+
|
|
325
|
+
// LLM configuration
|
|
326
|
+
llm?: {
|
|
327
|
+
model?: string;
|
|
328
|
+
temperature?: number;
|
|
329
|
+
max_tokens?: number;
|
|
330
|
+
system_prompt?: string;
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
// Custom configuration
|
|
334
|
+
custom?: Record<string, unknown>;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// ============================================================================
|
|
338
|
+
// AGENT STATE
|
|
339
|
+
// ============================================================================
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Cycle metrics for lifespan tracking
|
|
343
|
+
*/
|
|
344
|
+
export interface CycleMetric {
|
|
345
|
+
cycle_number: number;
|
|
346
|
+
duration_ms: number;
|
|
347
|
+
success: boolean;
|
|
348
|
+
score: number;
|
|
349
|
+
timestamp: number;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Agent lifespan context - tracks evolution across cycles
|
|
354
|
+
*/
|
|
355
|
+
export interface AgentLifespanContext {
|
|
356
|
+
total_cycles_completed: number;
|
|
357
|
+
evolution_level: number;
|
|
358
|
+
performance_trend: 'improving' | 'stable' | 'declining';
|
|
359
|
+
average_cycle_duration: number;
|
|
360
|
+
recent_metrics: CycleMetric[];
|
|
361
|
+
knowledge_growth_trajectory: number;
|
|
362
|
+
adaptation_score: number;
|
|
363
|
+
related_tasks: string[];
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Assistant-specific lifespan context (e.g., Brittney)
|
|
368
|
+
*/
|
|
369
|
+
export interface AssistantLifespanContext {
|
|
370
|
+
total_interactions: number;
|
|
371
|
+
training_data_processed: number;
|
|
372
|
+
personality_evolution: {
|
|
373
|
+
emotional_responsiveness: number;
|
|
374
|
+
communication_style: string[];
|
|
375
|
+
user_preferences: Record<string, unknown>;
|
|
376
|
+
};
|
|
377
|
+
desktop_environment_memory: {
|
|
378
|
+
frequent_apps: string[];
|
|
379
|
+
window_arrangement_patterns: string[];
|
|
380
|
+
user_workflows: string[];
|
|
381
|
+
last_active_session_id?: string;
|
|
382
|
+
};
|
|
383
|
+
conversation_history: unknown[];
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Complete agent state
|
|
388
|
+
*/
|
|
389
|
+
export interface AgentState {
|
|
390
|
+
agent_id: string;
|
|
391
|
+
current_phase: AgentPhase;
|
|
392
|
+
phase_start_time: number;
|
|
393
|
+
cycle_number: number;
|
|
394
|
+
|
|
395
|
+
// Knowledge stores
|
|
396
|
+
knowledge: Map<string, unknown>;
|
|
397
|
+
patterns: unknown[];
|
|
398
|
+
wisdom: unknown[];
|
|
399
|
+
gotchas: unknown[];
|
|
400
|
+
|
|
401
|
+
// Phase outputs
|
|
402
|
+
reflection_context: Record<string, unknown>;
|
|
403
|
+
execution_result: unknown;
|
|
404
|
+
compressed_knowledge: string;
|
|
405
|
+
|
|
406
|
+
// Metrics
|
|
407
|
+
metrics: {
|
|
408
|
+
phases_completed: number;
|
|
409
|
+
total_cycles: number;
|
|
410
|
+
efficiency_score: number;
|
|
411
|
+
token_usage: number;
|
|
412
|
+
};
|
|
413
|
+
|
|
414
|
+
// Lifespan
|
|
415
|
+
lifespan?: AgentLifespanContext;
|
|
416
|
+
assistant_lifespan?: AssistantLifespanContext;
|
|
417
|
+
|
|
418
|
+
// Flags
|
|
419
|
+
is_training_mode: boolean;
|
|
420
|
+
is_shutting_down: boolean;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
// ============================================================================
|
|
424
|
+
// INTER-AGENT COMMUNICATION
|
|
425
|
+
// ============================================================================
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Message priority levels
|
|
429
|
+
*/
|
|
430
|
+
export type MessagePriority = 'low' | 'medium' | 'high' | 'critical' | 'sovereign';
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Inter-agent message
|
|
434
|
+
*/
|
|
435
|
+
export interface AgentMessage {
|
|
436
|
+
id: string;
|
|
437
|
+
from: string;
|
|
438
|
+
to: string | 'broadcast';
|
|
439
|
+
type: 'request' | 'response' | 'notification' | 'event';
|
|
440
|
+
action: string;
|
|
441
|
+
payload: Record<string, unknown>;
|
|
442
|
+
priority: MessagePriority;
|
|
443
|
+
timestamp: number;
|
|
444
|
+
correlation_id?: string;
|
|
445
|
+
ttl_ms?: number;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Agent response
|
|
450
|
+
*/
|
|
451
|
+
export interface AgentResponse {
|
|
452
|
+
message_id: string;
|
|
453
|
+
success: boolean;
|
|
454
|
+
data?: unknown;
|
|
455
|
+
error?: string;
|
|
456
|
+
duration_ms: number;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
// ============================================================================
|
|
460
|
+
// KNOWLEDGE TYPES
|
|
461
|
+
// ============================================================================
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* Pattern entry for knowledge base
|
|
465
|
+
*/
|
|
466
|
+
export interface PatternEntry {
|
|
467
|
+
pattern_id: string;
|
|
468
|
+
name: string;
|
|
469
|
+
domain: string;
|
|
470
|
+
description: string;
|
|
471
|
+
template: string;
|
|
472
|
+
confidence: number;
|
|
473
|
+
usage_count: number;
|
|
474
|
+
created_at: string;
|
|
475
|
+
updated_at: string;
|
|
476
|
+
tags: string[];
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Wisdom entry for knowledge base
|
|
481
|
+
*/
|
|
482
|
+
export interface WisdomEntry {
|
|
483
|
+
wisdom_id: string;
|
|
484
|
+
content: string;
|
|
485
|
+
domain: string;
|
|
486
|
+
source: string;
|
|
487
|
+
confidence: number;
|
|
488
|
+
citations: string[];
|
|
489
|
+
created_at: string;
|
|
490
|
+
tags: string[];
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Gotcha entry for knowledge base
|
|
495
|
+
*/
|
|
496
|
+
export interface GotchaEntry {
|
|
497
|
+
gotcha_id: string;
|
|
498
|
+
trigger: string;
|
|
499
|
+
consequence: string;
|
|
500
|
+
avoidance: string;
|
|
501
|
+
domain: string;
|
|
502
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
503
|
+
occurrence_count: number;
|
|
504
|
+
created_at: string;
|
|
505
|
+
tags: string[];
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
// ============================================================================
|
|
509
|
+
// TRAIT CONTEXT EXTENSIONS
|
|
510
|
+
// ============================================================================
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Agent-specific trait context
|
|
514
|
+
*/
|
|
515
|
+
export interface AgentTraitContext {
|
|
516
|
+
// Core agent info
|
|
517
|
+
agent_id: string;
|
|
518
|
+
agent_name: string;
|
|
519
|
+
agent_type: string;
|
|
520
|
+
|
|
521
|
+
// Phase state
|
|
522
|
+
current_phase: AgentPhase;
|
|
523
|
+
phase_history: AgentPhase[];
|
|
524
|
+
|
|
525
|
+
// Knowledge access
|
|
526
|
+
getKnowledge: (key: string) => unknown;
|
|
527
|
+
setKnowledge: (key: string, value: unknown) => void;
|
|
528
|
+
queryKnowledge: (query: string) => Promise<unknown[]>;
|
|
529
|
+
|
|
530
|
+
// Inter-agent communication
|
|
531
|
+
sendMessage: (to: string, action: string, payload: unknown) => Promise<AgentResponse>;
|
|
532
|
+
broadcast: (action: string, payload: unknown) => Promise<void>;
|
|
533
|
+
|
|
534
|
+
// AI calling
|
|
535
|
+
callAI: (options: {
|
|
536
|
+
prompt: string;
|
|
537
|
+
context?: Record<string, unknown>;
|
|
538
|
+
model?: string;
|
|
539
|
+
temperature?: number;
|
|
540
|
+
max_tokens?: number;
|
|
541
|
+
}) => Promise<{ text: string; tokens_used: number }>;
|
|
542
|
+
|
|
543
|
+
// Phase control
|
|
544
|
+
transitionTo: (phase: AgentPhase) => void;
|
|
545
|
+
skipPhase: (phase: AgentPhase) => void;
|
|
546
|
+
repeatPhase: () => void;
|
|
547
|
+
|
|
548
|
+
// Metrics
|
|
549
|
+
recordMetric: (name: string, value: number) => void;
|
|
550
|
+
getMetrics: () => Record<string, number>;
|
|
551
|
+
|
|
552
|
+
// Logging
|
|
553
|
+
log: (level: 'debug' | 'info' | 'warn' | 'error', message: string, data?: unknown) => void;
|
|
554
|
+
|
|
555
|
+
// Economy & Autonomy Extensions
|
|
556
|
+
wallet?: {
|
|
557
|
+
getBalance: (asset?: string) => Promise<number>;
|
|
558
|
+
pay: (
|
|
559
|
+
endpoint: string,
|
|
560
|
+
amount: number,
|
|
561
|
+
asset: string
|
|
562
|
+
) => Promise<{ success: boolean; txHash?: string }>;
|
|
563
|
+
trade: (
|
|
564
|
+
from: string,
|
|
565
|
+
to: string,
|
|
566
|
+
amount: number
|
|
567
|
+
) => Promise<{ success: boolean; txHash?: string }>;
|
|
568
|
+
mintNFT: (metadata: Record<string, any>) => Promise<{ success: boolean; tokenId?: string }>;
|
|
569
|
+
};
|
|
570
|
+
|
|
571
|
+
story_weaver?: {
|
|
572
|
+
generateNarrative: (context: Record<string, unknown>) => Promise<string>;
|
|
573
|
+
createWorld: (theme: string) => Promise<string>; // Returns VRR Twin ID
|
|
574
|
+
deployContracts: (worldId: string) => Promise<boolean>;
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
// ============================================================================
|
|
579
|
+
// EXPORTS
|
|
580
|
+
// ============================================================================
|
|
581
|
+
|
|
582
|
+
export default {
|
|
583
|
+
PHASE_ORDER,
|
|
584
|
+
DEFAULT_PHASE_TIMINGS,
|
|
585
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent Wallet Registry
|
|
3
|
+
* @module @holoscript/core
|
|
4
|
+
*
|
|
5
|
+
* PURPOSE:
|
|
6
|
+
* Bridges autonomous agents spawned via uaa2-service with Base L2 wallets.
|
|
7
|
+
* Allows agents to securely hold funds and autonomously purchase logic traits
|
|
8
|
+
* on the HoloScript marketplace. Signing is delegated to a Web3Connector
|
|
9
|
+
* implementation (see @holoscript/marketplace-api for the viem-based connector).
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export interface AgentWallet {
|
|
13
|
+
agentId: string;
|
|
14
|
+
walletAddress: string;
|
|
15
|
+
networkId: number; // e.g. 8453 for Base
|
|
16
|
+
balanceThreshold: number; // minimum balance before requesting auto-refill
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class AgentWalletRegistry {
|
|
20
|
+
private static instance: AgentWalletRegistry;
|
|
21
|
+
private wallets: Map<string, AgentWallet> = new Map();
|
|
22
|
+
|
|
23
|
+
private constructor() {}
|
|
24
|
+
|
|
25
|
+
public static getInstance(): AgentWalletRegistry {
|
|
26
|
+
if (!AgentWalletRegistry.instance) {
|
|
27
|
+
AgentWalletRegistry.instance = new AgentWalletRegistry();
|
|
28
|
+
}
|
|
29
|
+
return AgentWalletRegistry.instance;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Registers a new agent wallet mapping
|
|
34
|
+
*/
|
|
35
|
+
public registerWallet(
|
|
36
|
+
agentId: string,
|
|
37
|
+
walletAddress: string,
|
|
38
|
+
networkId: number = 8453
|
|
39
|
+
): AgentWallet {
|
|
40
|
+
const wallet: AgentWallet = {
|
|
41
|
+
agentId,
|
|
42
|
+
walletAddress,
|
|
43
|
+
networkId,
|
|
44
|
+
balanceThreshold: 0.001, // 0.001 ETH
|
|
45
|
+
};
|
|
46
|
+
this.wallets.set(agentId, wallet);
|
|
47
|
+
return wallet;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Retrieves an agent's registered wallet
|
|
52
|
+
*/
|
|
53
|
+
public getWallet(agentId: string): AgentWallet | undefined {
|
|
54
|
+
return this.wallets.get(agentId);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Removes an agent's wallet from the registry
|
|
59
|
+
*/
|
|
60
|
+
public unregisterWallet(agentId: string): boolean {
|
|
61
|
+
return this.wallets.delete(agentId);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Authorizes an agent transaction using EIP-712 signature fallback
|
|
66
|
+
* (Placeholder for Coinbase AgentKit KMS signing)
|
|
67
|
+
*/
|
|
68
|
+
public async authorizeTransaction(agentId: string, payload: unknown): Promise<string> {
|
|
69
|
+
const wallet = this.getWallet(agentId);
|
|
70
|
+
if (!wallet) {
|
|
71
|
+
throw new Error(`[AgentWalletRegistry] No wallet registered for agent ${agentId}`);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// In production, this proxies into a Web3Connector for secure signing.
|
|
75
|
+
// Simulating signature generation:
|
|
76
|
+
const mockHash = '0x' + Buffer.from(JSON.stringify(payload)).toString('hex').slice(0, 64);
|
|
77
|
+
return mockHash;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export function getAgentWalletRegistry(): AgentWalletRegistry {
|
|
82
|
+
return AgentWalletRegistry.getInstance();
|
|
83
|
+
}
|