0agent 1.0.0

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 (443) hide show
  1. package/README.md +164 -0
  2. package/bin/0agent.js +614 -0
  3. package/package.json +59 -0
  4. package/packages/core/dist/bootstrap/BootstrapProtocol.d.ts +37 -0
  5. package/packages/core/dist/bootstrap/BootstrapProtocol.d.ts.map +1 -0
  6. package/packages/core/dist/bootstrap/BootstrapProtocol.js +82 -0
  7. package/packages/core/dist/bootstrap/BootstrapProtocol.js.map +1 -0
  8. package/packages/core/dist/bootstrap/GraphConstructor.d.ts +44 -0
  9. package/packages/core/dist/bootstrap/GraphConstructor.d.ts.map +1 -0
  10. package/packages/core/dist/bootstrap/GraphConstructor.js +160 -0
  11. package/packages/core/dist/bootstrap/GraphConstructor.js.map +1 -0
  12. package/packages/core/dist/bootstrap/HypothesisManager.d.ts +50 -0
  13. package/packages/core/dist/bootstrap/HypothesisManager.d.ts.map +1 -0
  14. package/packages/core/dist/bootstrap/HypothesisManager.js +108 -0
  15. package/packages/core/dist/bootstrap/HypothesisManager.js.map +1 -0
  16. package/packages/core/dist/bootstrap/StagedMutations.d.ts +50 -0
  17. package/packages/core/dist/bootstrap/StagedMutations.d.ts.map +1 -0
  18. package/packages/core/dist/bootstrap/StagedMutations.js +80 -0
  19. package/packages/core/dist/bootstrap/StagedMutations.js.map +1 -0
  20. package/packages/core/dist/concurrency/EdgeWeightUpdater.d.ts +16 -0
  21. package/packages/core/dist/concurrency/EdgeWeightUpdater.d.ts.map +1 -0
  22. package/packages/core/dist/concurrency/EdgeWeightUpdater.js +57 -0
  23. package/packages/core/dist/concurrency/EdgeWeightUpdater.js.map +1 -0
  24. package/packages/core/dist/concurrency/SessionSnapshot.d.ts +63 -0
  25. package/packages/core/dist/concurrency/SessionSnapshot.d.ts.map +1 -0
  26. package/packages/core/dist/concurrency/SessionSnapshot.js +124 -0
  27. package/packages/core/dist/concurrency/SessionSnapshot.js.map +1 -0
  28. package/packages/core/dist/embedding/HNSWIndex.d.ts +37 -0
  29. package/packages/core/dist/embedding/HNSWIndex.d.ts.map +1 -0
  30. package/packages/core/dist/embedding/HNSWIndex.js +86 -0
  31. package/packages/core/dist/embedding/HNSWIndex.js.map +1 -0
  32. package/packages/core/dist/embedding/MultimodalEmbedder.d.ts +24 -0
  33. package/packages/core/dist/embedding/MultimodalEmbedder.d.ts.map +1 -0
  34. package/packages/core/dist/embedding/MultimodalEmbedder.js +75 -0
  35. package/packages/core/dist/embedding/MultimodalEmbedder.js.map +1 -0
  36. package/packages/core/dist/embedding/adapters/NomicAdapter.d.ts +7 -0
  37. package/packages/core/dist/embedding/adapters/NomicAdapter.d.ts.map +1 -0
  38. package/packages/core/dist/embedding/adapters/NomicAdapter.js +11 -0
  39. package/packages/core/dist/embedding/adapters/NomicAdapter.js.map +1 -0
  40. package/packages/core/dist/embedding/adapters/OllamaAdapter.d.ts +19 -0
  41. package/packages/core/dist/embedding/adapters/OllamaAdapter.d.ts.map +1 -0
  42. package/packages/core/dist/embedding/adapters/OllamaAdapter.js +27 -0
  43. package/packages/core/dist/embedding/adapters/OllamaAdapter.js.map +1 -0
  44. package/packages/core/dist/embedding/adapters/OpenAIAdapter.d.ts +14 -0
  45. package/packages/core/dist/embedding/adapters/OpenAIAdapter.d.ts.map +1 -0
  46. package/packages/core/dist/embedding/adapters/OpenAIAdapter.js +48 -0
  47. package/packages/core/dist/embedding/adapters/OpenAIAdapter.js.map +1 -0
  48. package/packages/core/dist/engine/CreditAttribution.d.ts +47 -0
  49. package/packages/core/dist/engine/CreditAttribution.d.ts.map +1 -0
  50. package/packages/core/dist/engine/CreditAttribution.js +196 -0
  51. package/packages/core/dist/engine/CreditAttribution.js.map +1 -0
  52. package/packages/core/dist/engine/DecayScheduler.d.ts +45 -0
  53. package/packages/core/dist/engine/DecayScheduler.d.ts.map +1 -0
  54. package/packages/core/dist/engine/DecayScheduler.js +115 -0
  55. package/packages/core/dist/engine/DecayScheduler.js.map +1 -0
  56. package/packages/core/dist/engine/InferenceEngine.d.ts +95 -0
  57. package/packages/core/dist/engine/InferenceEngine.d.ts.map +1 -0
  58. package/packages/core/dist/engine/InferenceEngine.js +242 -0
  59. package/packages/core/dist/engine/InferenceEngine.js.map +1 -0
  60. package/packages/core/dist/engine/SelectionPolicy.d.ts +29 -0
  61. package/packages/core/dist/engine/SelectionPolicy.d.ts.map +1 -0
  62. package/packages/core/dist/engine/SelectionPolicy.js +58 -0
  63. package/packages/core/dist/engine/SelectionPolicy.js.map +1 -0
  64. package/packages/core/dist/engine/SelfImprovementEngine.d.ts +58 -0
  65. package/packages/core/dist/engine/SelfImprovementEngine.d.ts.map +1 -0
  66. package/packages/core/dist/engine/SelfImprovementEngine.js +265 -0
  67. package/packages/core/dist/engine/SelfImprovementEngine.js.map +1 -0
  68. package/packages/core/dist/engine/SelfImprovementPrompt.d.ts +10 -0
  69. package/packages/core/dist/engine/SelfImprovementPrompt.d.ts.map +1 -0
  70. package/packages/core/dist/engine/SelfImprovementPrompt.js +193 -0
  71. package/packages/core/dist/engine/SelfImprovementPrompt.js.map +1 -0
  72. package/packages/core/dist/engine/WeightPropagation.d.ts +77 -0
  73. package/packages/core/dist/engine/WeightPropagation.d.ts.map +1 -0
  74. package/packages/core/dist/engine/WeightPropagation.js +101 -0
  75. package/packages/core/dist/engine/WeightPropagation.js.map +1 -0
  76. package/packages/core/dist/engine/WorkflowSuggestionEngine.d.ts +26 -0
  77. package/packages/core/dist/engine/WorkflowSuggestionEngine.d.ts.map +1 -0
  78. package/packages/core/dist/engine/WorkflowSuggestionEngine.js +54 -0
  79. package/packages/core/dist/engine/WorkflowSuggestionEngine.js.map +1 -0
  80. package/packages/core/dist/entity/AliasIndex.d.ts +39 -0
  81. package/packages/core/dist/entity/AliasIndex.d.ts.map +1 -0
  82. package/packages/core/dist/entity/AliasIndex.js +81 -0
  83. package/packages/core/dist/entity/AliasIndex.js.map +1 -0
  84. package/packages/core/dist/entity/ContextActivator.d.ts +53 -0
  85. package/packages/core/dist/entity/ContextActivator.d.ts.map +1 -0
  86. package/packages/core/dist/entity/ContextActivator.js +163 -0
  87. package/packages/core/dist/entity/ContextActivator.js.map +1 -0
  88. package/packages/core/dist/entity/EntityHierarchy.d.ts +48 -0
  89. package/packages/core/dist/entity/EntityHierarchy.d.ts.map +1 -0
  90. package/packages/core/dist/entity/EntityHierarchy.js +134 -0
  91. package/packages/core/dist/entity/EntityHierarchy.js.map +1 -0
  92. package/packages/core/dist/entity/EntityResolutionPipeline.d.ts +48 -0
  93. package/packages/core/dist/entity/EntityResolutionPipeline.d.ts.map +1 -0
  94. package/packages/core/dist/entity/EntityResolutionPipeline.js +221 -0
  95. package/packages/core/dist/entity/EntityResolutionPipeline.js.map +1 -0
  96. package/packages/core/dist/entity/MCPEnrichedResolver.d.ts +17 -0
  97. package/packages/core/dist/entity/MCPEnrichedResolver.d.ts.map +1 -0
  98. package/packages/core/dist/entity/MCPEnrichedResolver.js +19 -0
  99. package/packages/core/dist/entity/MCPEnrichedResolver.js.map +1 -0
  100. package/packages/core/dist/entity/NodeResolutionService.d.ts +46 -0
  101. package/packages/core/dist/entity/NodeResolutionService.d.ts.map +1 -0
  102. package/packages/core/dist/entity/NodeResolutionService.js +150 -0
  103. package/packages/core/dist/entity/NodeResolutionService.js.map +1 -0
  104. package/packages/core/dist/entity/PersonalityAccumulator.d.ts +41 -0
  105. package/packages/core/dist/entity/PersonalityAccumulator.d.ts.map +1 -0
  106. package/packages/core/dist/entity/PersonalityAccumulator.js +126 -0
  107. package/packages/core/dist/entity/PersonalityAccumulator.js.map +1 -0
  108. package/packages/core/dist/entity/PersonalityProfile.d.ts +31 -0
  109. package/packages/core/dist/entity/PersonalityProfile.d.ts.map +1 -0
  110. package/packages/core/dist/entity/PersonalityProfile.js +94 -0
  111. package/packages/core/dist/entity/PersonalityProfile.js.map +1 -0
  112. package/packages/core/dist/entity/index.d.ts +4 -0
  113. package/packages/core/dist/entity/index.d.ts.map +1 -0
  114. package/packages/core/dist/entity/index.js +4 -0
  115. package/packages/core/dist/entity/index.js.map +1 -0
  116. package/packages/core/dist/graph/GraphEdge.d.ts +37 -0
  117. package/packages/core/dist/graph/GraphEdge.d.ts.map +1 -0
  118. package/packages/core/dist/graph/GraphEdge.js +29 -0
  119. package/packages/core/dist/graph/GraphEdge.js.map +1 -0
  120. package/packages/core/dist/graph/GraphNode.d.ts +52 -0
  121. package/packages/core/dist/graph/GraphNode.d.ts.map +1 -0
  122. package/packages/core/dist/graph/GraphNode.js +41 -0
  123. package/packages/core/dist/graph/GraphNode.js.map +1 -0
  124. package/packages/core/dist/graph/GraphQuery.d.ts +46 -0
  125. package/packages/core/dist/graph/GraphQuery.d.ts.map +1 -0
  126. package/packages/core/dist/graph/GraphQuery.js +47 -0
  127. package/packages/core/dist/graph/GraphQuery.js.map +1 -0
  128. package/packages/core/dist/graph/KnowledgeGraph.d.ts +38 -0
  129. package/packages/core/dist/graph/KnowledgeGraph.d.ts.map +1 -0
  130. package/packages/core/dist/graph/KnowledgeGraph.js +345 -0
  131. package/packages/core/dist/graph/KnowledgeGraph.js.map +1 -0
  132. package/packages/core/dist/graph/SubGraph.d.ts +36 -0
  133. package/packages/core/dist/graph/SubGraph.d.ts.map +1 -0
  134. package/packages/core/dist/graph/SubGraph.js +86 -0
  135. package/packages/core/dist/graph/SubGraph.js.map +1 -0
  136. package/packages/core/dist/index.d.ts +54 -0
  137. package/packages/core/dist/index.d.ts.map +1 -0
  138. package/packages/core/dist/index.js +62 -0
  139. package/packages/core/dist/index.js.map +1 -0
  140. package/packages/core/dist/maintenance/CompactionOrchestrator.d.ts +22 -0
  141. package/packages/core/dist/maintenance/CompactionOrchestrator.d.ts.map +1 -0
  142. package/packages/core/dist/maintenance/CompactionOrchestrator.js +62 -0
  143. package/packages/core/dist/maintenance/CompactionOrchestrator.js.map +1 -0
  144. package/packages/core/dist/maintenance/EdgePruner.d.ts +20 -0
  145. package/packages/core/dist/maintenance/EdgePruner.d.ts.map +1 -0
  146. package/packages/core/dist/maintenance/EdgePruner.js +65 -0
  147. package/packages/core/dist/maintenance/EdgePruner.js.map +1 -0
  148. package/packages/core/dist/maintenance/GraphCheckpoint.d.ts +51 -0
  149. package/packages/core/dist/maintenance/GraphCheckpoint.d.ts.map +1 -0
  150. package/packages/core/dist/maintenance/GraphCheckpoint.js +81 -0
  151. package/packages/core/dist/maintenance/GraphCheckpoint.js.map +1 -0
  152. package/packages/core/dist/maintenance/GraphRollback.d.ts +36 -0
  153. package/packages/core/dist/maintenance/GraphRollback.d.ts.map +1 -0
  154. package/packages/core/dist/maintenance/GraphRollback.js +154 -0
  155. package/packages/core/dist/maintenance/GraphRollback.js.map +1 -0
  156. package/packages/core/dist/maintenance/NodeDeduplicator.d.ts +26 -0
  157. package/packages/core/dist/maintenance/NodeDeduplicator.d.ts.map +1 -0
  158. package/packages/core/dist/maintenance/NodeDeduplicator.js +171 -0
  159. package/packages/core/dist/maintenance/NodeDeduplicator.js.map +1 -0
  160. package/packages/core/dist/maintenance/SubgraphArchiver.d.ts +18 -0
  161. package/packages/core/dist/maintenance/SubgraphArchiver.d.ts.map +1 -0
  162. package/packages/core/dist/maintenance/SubgraphArchiver.js +180 -0
  163. package/packages/core/dist/maintenance/SubgraphArchiver.js.map +1 -0
  164. package/packages/core/dist/memory/ArchivalMemory.d.ts +28 -0
  165. package/packages/core/dist/memory/ArchivalMemory.d.ts.map +1 -0
  166. package/packages/core/dist/memory/ArchivalMemory.js +26 -0
  167. package/packages/core/dist/memory/ArchivalMemory.js.map +1 -0
  168. package/packages/core/dist/memory/BlinkingMemory.d.ts +34 -0
  169. package/packages/core/dist/memory/BlinkingMemory.d.ts.map +1 -0
  170. package/packages/core/dist/memory/BlinkingMemory.js +44 -0
  171. package/packages/core/dist/memory/BlinkingMemory.js.map +1 -0
  172. package/packages/core/dist/memory/WorkingMemory.d.ts +38 -0
  173. package/packages/core/dist/memory/WorkingMemory.d.ts.map +1 -0
  174. package/packages/core/dist/memory/WorkingMemory.js +70 -0
  175. package/packages/core/dist/memory/WorkingMemory.js.map +1 -0
  176. package/packages/core/dist/storage/ObjectStore.d.ts +24 -0
  177. package/packages/core/dist/storage/ObjectStore.d.ts.map +1 -0
  178. package/packages/core/dist/storage/ObjectStore.js +50 -0
  179. package/packages/core/dist/storage/ObjectStore.js.map +1 -0
  180. package/packages/core/dist/storage/TraceStore.d.ts +16 -0
  181. package/packages/core/dist/storage/TraceStore.d.ts.map +1 -0
  182. package/packages/core/dist/storage/TraceStore.js +19 -0
  183. package/packages/core/dist/storage/TraceStore.js.map +1 -0
  184. package/packages/core/dist/storage/WeightEventLog.d.ts +11 -0
  185. package/packages/core/dist/storage/WeightEventLog.d.ts.map +1 -0
  186. package/packages/core/dist/storage/WeightEventLog.js +16 -0
  187. package/packages/core/dist/storage/WeightEventLog.js.map +1 -0
  188. package/packages/core/dist/storage/adapters/SQLiteAdapter.d.ts +86 -0
  189. package/packages/core/dist/storage/adapters/SQLiteAdapter.d.ts.map +1 -0
  190. package/packages/core/dist/storage/adapters/SQLiteAdapter.js +514 -0
  191. package/packages/core/dist/storage/adapters/SQLiteAdapter.js.map +1 -0
  192. package/packages/core/dist/trace/DeferredTrace.d.ts +43 -0
  193. package/packages/core/dist/trace/DeferredTrace.d.ts.map +1 -0
  194. package/packages/core/dist/trace/DeferredTrace.js +44 -0
  195. package/packages/core/dist/trace/DeferredTrace.js.map +1 -0
  196. package/packages/core/dist/trace/OutcomeTrace.d.ts +38 -0
  197. package/packages/core/dist/trace/OutcomeTrace.d.ts.map +1 -0
  198. package/packages/core/dist/trace/OutcomeTrace.js +9 -0
  199. package/packages/core/dist/trace/OutcomeTrace.js.map +1 -0
  200. package/packages/core/dist/trace/SkillTraceDecorator.d.ts +25 -0
  201. package/packages/core/dist/trace/SkillTraceDecorator.d.ts.map +1 -0
  202. package/packages/core/dist/trace/SkillTraceDecorator.js +41 -0
  203. package/packages/core/dist/trace/SkillTraceDecorator.js.map +1 -0
  204. package/packages/core/dist/trace/TraceReplay.d.ts +25 -0
  205. package/packages/core/dist/trace/TraceReplay.d.ts.map +1 -0
  206. package/packages/core/dist/trace/TraceReplay.js +40 -0
  207. package/packages/core/dist/trace/TraceReplay.js.map +1 -0
  208. package/packages/core/dist/trace/TraversalLedger.d.ts +33 -0
  209. package/packages/core/dist/trace/TraversalLedger.d.ts.map +1 -0
  210. package/packages/core/dist/trace/TraversalLedger.js +61 -0
  211. package/packages/core/dist/trace/TraversalLedger.js.map +1 -0
  212. package/packages/core/dist/types/SelfImprovement.d.ts +174 -0
  213. package/packages/core/dist/types/SelfImprovement.d.ts.map +1 -0
  214. package/packages/core/dist/types/SelfImprovement.js +23 -0
  215. package/packages/core/dist/types/SelfImprovement.js.map +1 -0
  216. package/packages/core/dist/types/SkillDefinition.d.ts +68 -0
  217. package/packages/core/dist/types/SkillDefinition.d.ts.map +1 -0
  218. package/packages/core/dist/types/SkillDefinition.js +12 -0
  219. package/packages/core/dist/types/SkillDefinition.js.map +1 -0
  220. package/packages/daemon/dist/BackgroundWorkers.d.ts +55 -0
  221. package/packages/daemon/dist/BackgroundWorkers.d.ts.map +1 -0
  222. package/packages/daemon/dist/BackgroundWorkers.js +121 -0
  223. package/packages/daemon/dist/BackgroundWorkers.js.map +1 -0
  224. package/packages/daemon/dist/EntityScopedContext.d.ts +22 -0
  225. package/packages/daemon/dist/EntityScopedContext.d.ts.map +1 -0
  226. package/packages/daemon/dist/EntityScopedContext.js +85 -0
  227. package/packages/daemon/dist/EntityScopedContext.js.map +1 -0
  228. package/packages/daemon/dist/HTTPServer.d.ts +27 -0
  229. package/packages/daemon/dist/HTTPServer.d.ts.map +1 -0
  230. package/packages/daemon/dist/HTTPServer.js +62 -0
  231. package/packages/daemon/dist/HTTPServer.js.map +1 -0
  232. package/packages/daemon/dist/SessionManager.d.ts +95 -0
  233. package/packages/daemon/dist/SessionManager.d.ts.map +1 -0
  234. package/packages/daemon/dist/SessionManager.js +205 -0
  235. package/packages/daemon/dist/SessionManager.js.map +1 -0
  236. package/packages/daemon/dist/SkillRegistry.d.ts +34 -0
  237. package/packages/daemon/dist/SkillRegistry.d.ts.map +1 -0
  238. package/packages/daemon/dist/SkillRegistry.js +90 -0
  239. package/packages/daemon/dist/SkillRegistry.js.map +1 -0
  240. package/packages/daemon/dist/SkillVariableResolver.d.ts +24 -0
  241. package/packages/daemon/dist/SkillVariableResolver.d.ts.map +1 -0
  242. package/packages/daemon/dist/SkillVariableResolver.js +85 -0
  243. package/packages/daemon/dist/SkillVariableResolver.js.map +1 -0
  244. package/packages/daemon/dist/WebSocketEvents.d.ts +107 -0
  245. package/packages/daemon/dist/WebSocketEvents.d.ts.map +1 -0
  246. package/packages/daemon/dist/WebSocketEvents.js +111 -0
  247. package/packages/daemon/dist/WebSocketEvents.js.map +1 -0
  248. package/packages/daemon/dist/ZeroAgentDaemon.d.ts +39 -0
  249. package/packages/daemon/dist/ZeroAgentDaemon.d.ts.map +1 -0
  250. package/packages/daemon/dist/ZeroAgentDaemon.js +161 -0
  251. package/packages/daemon/dist/ZeroAgentDaemon.js.map +1 -0
  252. package/packages/daemon/dist/config/ConfigSchema.d.ts +631 -0
  253. package/packages/daemon/dist/config/ConfigSchema.d.ts.map +1 -0
  254. package/packages/daemon/dist/config/ConfigSchema.js +107 -0
  255. package/packages/daemon/dist/config/ConfigSchema.js.map +1 -0
  256. package/packages/daemon/dist/config/DaemonConfig.d.ts +10 -0
  257. package/packages/daemon/dist/config/DaemonConfig.d.ts.map +1 -0
  258. package/packages/daemon/dist/config/DaemonConfig.js +34 -0
  259. package/packages/daemon/dist/config/DaemonConfig.js.map +1 -0
  260. package/packages/daemon/dist/index.d.ts +10 -0
  261. package/packages/daemon/dist/index.d.ts.map +1 -0
  262. package/packages/daemon/dist/index.js +8 -0
  263. package/packages/daemon/dist/index.js.map +1 -0
  264. package/packages/daemon/dist/routes/entities.d.ts +6 -0
  265. package/packages/daemon/dist/routes/entities.d.ts.map +1 -0
  266. package/packages/daemon/dist/routes/entities.js +54 -0
  267. package/packages/daemon/dist/routes/entities.js.map +1 -0
  268. package/packages/daemon/dist/routes/graph.d.ts +6 -0
  269. package/packages/daemon/dist/routes/graph.d.ts.map +1 -0
  270. package/packages/daemon/dist/routes/graph.js +61 -0
  271. package/packages/daemon/dist/routes/graph.js.map +1 -0
  272. package/packages/daemon/dist/routes/health.d.ts +15 -0
  273. package/packages/daemon/dist/routes/health.d.ts.map +1 -0
  274. package/packages/daemon/dist/routes/health.js +11 -0
  275. package/packages/daemon/dist/routes/health.js.map +1 -0
  276. package/packages/daemon/dist/routes/sessions.d.ts +6 -0
  277. package/packages/daemon/dist/routes/sessions.d.ts.map +1 -0
  278. package/packages/daemon/dist/routes/sessions.js +43 -0
  279. package/packages/daemon/dist/routes/sessions.js.map +1 -0
  280. package/packages/daemon/dist/routes/skills.d.ts +6 -0
  281. package/packages/daemon/dist/routes/skills.d.ts.map +1 -0
  282. package/packages/daemon/dist/routes/skills.js +62 -0
  283. package/packages/daemon/dist/routes/skills.js.map +1 -0
  284. package/packages/daemon/dist/routes/subagents.d.ts +3 -0
  285. package/packages/daemon/dist/routes/subagents.d.ts.map +1 -0
  286. package/packages/daemon/dist/routes/subagents.js +14 -0
  287. package/packages/daemon/dist/routes/subagents.js.map +1 -0
  288. package/packages/daemon/dist/routes/traces.d.ts +6 -0
  289. package/packages/daemon/dist/routes/traces.d.ts.map +1 -0
  290. package/packages/daemon/dist/routes/traces.js +31 -0
  291. package/packages/daemon/dist/routes/traces.js.map +1 -0
  292. package/packages/daemon/dist/start.d.ts +7 -0
  293. package/packages/daemon/dist/start.d.ts.map +1 -0
  294. package/packages/daemon/dist/start.js +24 -0
  295. package/packages/daemon/dist/start.js.map +1 -0
  296. package/packages/mcp-hub/dist/FilteredProxy.d.ts +20 -0
  297. package/packages/mcp-hub/dist/FilteredProxy.d.ts.map +1 -0
  298. package/packages/mcp-hub/dist/FilteredProxy.js +43 -0
  299. package/packages/mcp-hub/dist/FilteredProxy.js.map +1 -0
  300. package/packages/mcp-hub/dist/MCPDiscovery.d.ts +18 -0
  301. package/packages/mcp-hub/dist/MCPDiscovery.d.ts.map +1 -0
  302. package/packages/mcp-hub/dist/MCPDiscovery.js +86 -0
  303. package/packages/mcp-hub/dist/MCPDiscovery.js.map +1 -0
  304. package/packages/mcp-hub/dist/MCPHub.d.ts +48 -0
  305. package/packages/mcp-hub/dist/MCPHub.d.ts.map +1 -0
  306. package/packages/mcp-hub/dist/MCPHub.js +100 -0
  307. package/packages/mcp-hub/dist/MCPHub.js.map +1 -0
  308. package/packages/mcp-hub/dist/builtin/BrowserMCP.d.ts +6 -0
  309. package/packages/mcp-hub/dist/builtin/BrowserMCP.d.ts.map +1 -0
  310. package/packages/mcp-hub/dist/builtin/BrowserMCP.js +69 -0
  311. package/packages/mcp-hub/dist/builtin/BrowserMCP.js.map +1 -0
  312. package/packages/mcp-hub/dist/builtin/FilesystemMCP.d.ts +11 -0
  313. package/packages/mcp-hub/dist/builtin/FilesystemMCP.d.ts.map +1 -0
  314. package/packages/mcp-hub/dist/builtin/FilesystemMCP.js +104 -0
  315. package/packages/mcp-hub/dist/builtin/FilesystemMCP.js.map +1 -0
  316. package/packages/mcp-hub/dist/builtin/MemoryMCP.d.ts +9 -0
  317. package/packages/mcp-hub/dist/builtin/MemoryMCP.d.ts.map +1 -0
  318. package/packages/mcp-hub/dist/builtin/MemoryMCP.js +185 -0
  319. package/packages/mcp-hub/dist/builtin/MemoryMCP.js.map +1 -0
  320. package/packages/mcp-hub/dist/builtin/ShellMCP.d.ts +8 -0
  321. package/packages/mcp-hub/dist/builtin/ShellMCP.d.ts.map +1 -0
  322. package/packages/mcp-hub/dist/builtin/ShellMCP.js +74 -0
  323. package/packages/mcp-hub/dist/builtin/ShellMCP.js.map +1 -0
  324. package/packages/mcp-hub/dist/index.d.ts +9 -0
  325. package/packages/mcp-hub/dist/index.d.ts.map +1 -0
  326. package/packages/mcp-hub/dist/index.js +8 -0
  327. package/packages/mcp-hub/dist/index.js.map +1 -0
  328. package/packages/mcp-hub/dist/types.d.ts +30 -0
  329. package/packages/mcp-hub/dist/types.d.ts.map +1 -0
  330. package/packages/mcp-hub/dist/types.js +2 -0
  331. package/packages/mcp-hub/dist/types.js.map +1 -0
  332. package/packages/subagent/dist/CapabilityToken.d.ts +66 -0
  333. package/packages/subagent/dist/CapabilityToken.d.ts.map +1 -0
  334. package/packages/subagent/dist/CapabilityToken.js +120 -0
  335. package/packages/subagent/dist/CapabilityToken.js.map +1 -0
  336. package/packages/subagent/dist/ResourceDefaults.d.ts +16 -0
  337. package/packages/subagent/dist/ResourceDefaults.d.ts.map +1 -0
  338. package/packages/subagent/dist/ResourceDefaults.js +68 -0
  339. package/packages/subagent/dist/ResourceDefaults.js.map +1 -0
  340. package/packages/subagent/dist/SkillInputResolver.d.ts +30 -0
  341. package/packages/subagent/dist/SkillInputResolver.d.ts.map +1 -0
  342. package/packages/subagent/dist/SkillInputResolver.js +59 -0
  343. package/packages/subagent/dist/SkillInputResolver.js.map +1 -0
  344. package/packages/subagent/dist/SkillInvoker.d.ts +33 -0
  345. package/packages/subagent/dist/SkillInvoker.d.ts.map +1 -0
  346. package/packages/subagent/dist/SkillInvoker.js +69 -0
  347. package/packages/subagent/dist/SkillInvoker.js.map +1 -0
  348. package/packages/subagent/dist/SubagentOrchestrator.d.ts +52 -0
  349. package/packages/subagent/dist/SubagentOrchestrator.d.ts.map +1 -0
  350. package/packages/subagent/dist/SubagentOrchestrator.js +198 -0
  351. package/packages/subagent/dist/SubagentOrchestrator.js.map +1 -0
  352. package/packages/subagent/dist/SubagentResult.d.ts +34 -0
  353. package/packages/subagent/dist/SubagentResult.d.ts.map +1 -0
  354. package/packages/subagent/dist/SubagentResult.js +21 -0
  355. package/packages/subagent/dist/SubagentResult.js.map +1 -0
  356. package/packages/subagent/dist/Watchdog.d.ts +23 -0
  357. package/packages/subagent/dist/Watchdog.d.ts.map +1 -0
  358. package/packages/subagent/dist/Watchdog.js +44 -0
  359. package/packages/subagent/dist/Watchdog.js.map +1 -0
  360. package/packages/subagent/dist/index.d.ts +15 -0
  361. package/packages/subagent/dist/index.d.ts.map +1 -0
  362. package/packages/subagent/dist/index.js +23 -0
  363. package/packages/subagent/dist/index.js.map +1 -0
  364. package/packages/subagent/dist/sandbox/BwrapBackend.d.ts +14 -0
  365. package/packages/subagent/dist/sandbox/BwrapBackend.d.ts.map +1 -0
  366. package/packages/subagent/dist/sandbox/BwrapBackend.js +171 -0
  367. package/packages/subagent/dist/sandbox/BwrapBackend.js.map +1 -0
  368. package/packages/subagent/dist/sandbox/CloudBackend.d.ts +28 -0
  369. package/packages/subagent/dist/sandbox/CloudBackend.d.ts.map +1 -0
  370. package/packages/subagent/dist/sandbox/CloudBackend.js +52 -0
  371. package/packages/subagent/dist/sandbox/CloudBackend.js.map +1 -0
  372. package/packages/subagent/dist/sandbox/DockerBackend.d.ts +14 -0
  373. package/packages/subagent/dist/sandbox/DockerBackend.d.ts.map +1 -0
  374. package/packages/subagent/dist/sandbox/DockerBackend.js +149 -0
  375. package/packages/subagent/dist/sandbox/DockerBackend.js.map +1 -0
  376. package/packages/subagent/dist/sandbox/FirecrackerBackend.d.ts +17 -0
  377. package/packages/subagent/dist/sandbox/FirecrackerBackend.d.ts.map +1 -0
  378. package/packages/subagent/dist/sandbox/FirecrackerBackend.js +54 -0
  379. package/packages/subagent/dist/sandbox/FirecrackerBackend.js.map +1 -0
  380. package/packages/subagent/dist/sandbox/PodmanBackend.d.ts +13 -0
  381. package/packages/subagent/dist/sandbox/PodmanBackend.d.ts.map +1 -0
  382. package/packages/subagent/dist/sandbox/PodmanBackend.js +144 -0
  383. package/packages/subagent/dist/sandbox/PodmanBackend.js.map +1 -0
  384. package/packages/subagent/dist/sandbox/ProcessBackend.d.ts +16 -0
  385. package/packages/subagent/dist/sandbox/ProcessBackend.d.ts.map +1 -0
  386. package/packages/subagent/dist/sandbox/ProcessBackend.js +152 -0
  387. package/packages/subagent/dist/sandbox/ProcessBackend.js.map +1 -0
  388. package/packages/subagent/dist/sandbox/SandboxManager.d.ts +17 -0
  389. package/packages/subagent/dist/sandbox/SandboxManager.d.ts.map +1 -0
  390. package/packages/subagent/dist/sandbox/SandboxManager.js +45 -0
  391. package/packages/subagent/dist/sandbox/SandboxManager.js.map +1 -0
  392. package/packages/subagent/dist/sandbox/types.d.ts +35 -0
  393. package/packages/subagent/dist/sandbox/types.d.ts.map +1 -0
  394. package/packages/subagent/dist/sandbox/types.js +5 -0
  395. package/packages/subagent/dist/sandbox/types.js.map +1 -0
  396. package/packages/subagent-runtime/dist/AgentLoop.d.ts +46 -0
  397. package/packages/subagent-runtime/dist/AgentLoop.d.ts.map +1 -0
  398. package/packages/subagent-runtime/dist/AgentLoop.js +85 -0
  399. package/packages/subagent-runtime/dist/AgentLoop.js.map +1 -0
  400. package/packages/subagent-runtime/dist/MCPProxy.d.ts +24 -0
  401. package/packages/subagent-runtime/dist/MCPProxy.d.ts.map +1 -0
  402. package/packages/subagent-runtime/dist/MCPProxy.js +31 -0
  403. package/packages/subagent-runtime/dist/MCPProxy.js.map +1 -0
  404. package/packages/subagent-runtime/dist/OutputChannel.d.ts +10 -0
  405. package/packages/subagent-runtime/dist/OutputChannel.d.ts.map +1 -0
  406. package/packages/subagent-runtime/dist/OutputChannel.js +14 -0
  407. package/packages/subagent-runtime/dist/OutputChannel.js.map +1 -0
  408. package/packages/subagent-runtime/dist/ResourceTracker.d.ts +29 -0
  409. package/packages/subagent-runtime/dist/ResourceTracker.d.ts.map +1 -0
  410. package/packages/subagent-runtime/dist/ResourceTracker.js +46 -0
  411. package/packages/subagent-runtime/dist/ResourceTracker.js.map +1 -0
  412. package/packages/subagent-runtime/dist/TokenValidator.d.ts +17 -0
  413. package/packages/subagent-runtime/dist/TokenValidator.d.ts.map +1 -0
  414. package/packages/subagent-runtime/dist/TokenValidator.js +29 -0
  415. package/packages/subagent-runtime/dist/TokenValidator.js.map +1 -0
  416. package/packages/subagent-runtime/dist/index.d.ts +6 -0
  417. package/packages/subagent-runtime/dist/index.d.ts.map +1 -0
  418. package/packages/subagent-runtime/dist/index.js +11 -0
  419. package/packages/subagent-runtime/dist/index.js.map +1 -0
  420. package/packages/subagent-runtime/dist/main.d.ts +2 -0
  421. package/packages/subagent-runtime/dist/main.d.ts.map +1 -0
  422. package/packages/subagent-runtime/dist/main.js +102 -0
  423. package/packages/subagent-runtime/dist/main.js.map +1 -0
  424. package/seeds/b2b-outbound/package.json +6 -0
  425. package/seeds/research/package.json +6 -0
  426. package/seeds/software-engineering/install.ts +78 -0
  427. package/seeds/software-engineering/package.json +6 -0
  428. package/seeds/software-engineering/sprint-workflow.json +102 -0
  429. package/skills/build.yaml +97 -0
  430. package/skills/debug.yaml +117 -0
  431. package/skills/design-review.yaml +119 -0
  432. package/skills/doc.yaml +107 -0
  433. package/skills/office-hours.yaml +76 -0
  434. package/skills/plan-ceo-review.yaml +84 -0
  435. package/skills/plan-eng-review.yaml +96 -0
  436. package/skills/qa.yaml +116 -0
  437. package/skills/refactor.yaml +125 -0
  438. package/skills/research.yaml +108 -0
  439. package/skills/retro.yaml +106 -0
  440. package/skills/review.yaml +101 -0
  441. package/skills/security-audit.yaml +114 -0
  442. package/skills/ship.yaml +108 -0
  443. package/skills/test-writer.yaml +131 -0
@@ -0,0 +1,101 @@
1
+ export class WeightPropagation {
2
+ graph;
3
+ updater;
4
+ config;
5
+ constructor(graph, updater, config) {
6
+ this.graph = graph;
7
+ this.updater = updater;
8
+ this.config = {
9
+ learning_rate: config?.learning_rate ?? 0.1,
10
+ cross_graph_attenuation: config?.cross_graph_attenuation ?? 0.3,
11
+ enable_cross_graph: config?.enable_cross_graph ?? false,
12
+ };
13
+ }
14
+ /**
15
+ * MARGIN-BASED influence scoring.
16
+ * Prevents rich-get-richer premature convergence.
17
+ * NO selection_bonus multiplier.
18
+ *
19
+ * If there are no competing edges, influence is 1.0.
20
+ * Otherwise:
21
+ * margin = edge.weight - max(competitor weights)
22
+ * rawInfluence = max(0.1, margin / edge.weight)
23
+ * minInfluence = 1 / (numCompetitors + 1)
24
+ * influence = max(minInfluence, rawInfluence)
25
+ */
26
+ computeInfluence(edge, competing) {
27
+ if (competing.length === 0)
28
+ return 1.0;
29
+ const maxCompetitor = Math.max(...competing.map(e => e.weight));
30
+ const margin = edge.weight - maxCompetitor;
31
+ const rawInfluence = Math.max(0.1, margin / edge.weight);
32
+ const minInfluence = 1.0 / (competing.length + 1);
33
+ return Math.max(minInfluence, rawInfluence);
34
+ }
35
+ /**
36
+ * Adaptive step discount.
37
+ * Base MUST be 0.85, NOT 0.6.
38
+ * Sub-outcomes get halved (already learned from own signal).
39
+ *
40
+ * discount = 0.85 ^ step_index
41
+ * if has_sub_outcome: discount *= 0.5
42
+ */
43
+ computeDiscount(step) {
44
+ const baseDiscount = Math.pow(0.85, step.step_index);
45
+ if (step.has_sub_outcome)
46
+ return baseDiscount * 0.5;
47
+ return baseDiscount;
48
+ }
49
+ /**
50
+ * Credit = outcome_signal * influence * discount
51
+ */
52
+ computeCredit(outcomeSignal, influence, discount) {
53
+ return outcomeSignal * influence * discount;
54
+ }
55
+ /**
56
+ * Apply credit to weight: newWeight = clamp(currentWeight + credit * learning_rate, 0, 1)
57
+ */
58
+ applyCredit(currentWeight, credit) {
59
+ const newWeight = currentWeight + credit * this.config.learning_rate;
60
+ return Math.max(0.0, Math.min(1.0, newWeight));
61
+ }
62
+ /**
63
+ * Full propagation for a completed trace.
64
+ * For each step in the ledger:
65
+ * 1. Get the edge
66
+ * 2. Skip if locked
67
+ * 3. Get competing edges (siblings from same source node)
68
+ * 4. Compute influence, discount, credit
69
+ * 5. Apply credit to get new weight
70
+ * 6. Update via OCC updater
71
+ */
72
+ async propagate(steps, outcome) {
73
+ const results = [];
74
+ for (let i = 0; i < steps.length; i++) {
75
+ const step = steps[i];
76
+ const edge = this.graph.getEdge(step.edge_id);
77
+ if (!edge || edge.locked)
78
+ continue;
79
+ const siblingEdges = this.graph.getEdgesFrom(edge.from_node);
80
+ const competing = siblingEdges.filter(e => e.id !== edge.id);
81
+ const influence = this.computeInfluence(edge, competing);
82
+ const discount = this.computeDiscount(step);
83
+ const credit = this.computeCredit(outcome.value, influence, discount);
84
+ const newWeight = this.applyCredit(edge.weight, credit);
85
+ if (newWeight !== edge.weight) {
86
+ await this.updater.update(edge.id, edge.weight, newWeight, outcome.value > 0 ? 'outcome_positive' : 'outcome_negative', outcome.trace_id);
87
+ }
88
+ results.push({
89
+ edge_id: edge.id,
90
+ old_weight: edge.weight,
91
+ new_weight: newWeight,
92
+ delta: newWeight - edge.weight,
93
+ credit,
94
+ influence,
95
+ discount,
96
+ });
97
+ }
98
+ return results;
99
+ }
100
+ }
101
+ //# sourceMappingURL=WeightPropagation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeightPropagation.js","sourceRoot":"","sources":["../../src/engine/WeightPropagation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * WorkflowSuggestionEngine — Recommends the next skill based on
3
+ * workflow graph weights.
4
+ *
5
+ * Traverses from a skill node to its outgoing edges targeting other
6
+ * skill nodes, returning the highest-weight successor or ranked options.
7
+ */
8
+ import type { KnowledgeGraph } from '../graph/KnowledgeGraph.js';
9
+ export declare class WorkflowSuggestionEngine {
10
+ private graph;
11
+ constructor(graph: KnowledgeGraph);
12
+ /**
13
+ * Suggest the next skill to run based on the current graph state.
14
+ * Finds the skill node, gets outgoing edges to other skill nodes,
15
+ * returns the highest-weight successor.
16
+ */
17
+ suggest(lastSkillName: string): string | null;
18
+ /**
19
+ * Get all possible next skills with their weights, sorted descending.
20
+ */
21
+ getNextOptions(lastSkillName: string): Array<{
22
+ skill: string;
23
+ weight: number;
24
+ }>;
25
+ }
26
+ //# sourceMappingURL=WorkflowSuggestionEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowSuggestionEngine.d.ts","sourceRoot":"","sources":["../../src/engine/WorkflowSuggestionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,qBAAa,wBAAwB;IACvB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,cAAc;IAEzC;;;;OAIG;IACH,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsB7C;;OAEG;IACH,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAmBhF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * WorkflowSuggestionEngine — Recommends the next skill based on
3
+ * workflow graph weights.
4
+ *
5
+ * Traverses from a skill node to its outgoing edges targeting other
6
+ * skill nodes, returning the highest-weight successor or ranked options.
7
+ */
8
+ export class WorkflowSuggestionEngine {
9
+ graph;
10
+ constructor(graph) {
11
+ this.graph = graph;
12
+ }
13
+ /**
14
+ * Suggest the next skill to run based on the current graph state.
15
+ * Finds the skill node, gets outgoing edges to other skill nodes,
16
+ * returns the highest-weight successor.
17
+ */
18
+ suggest(lastSkillName) {
19
+ const results = this.graph.queryStructural({ limit: 100 });
20
+ const skillNode = results.find((r) => r.node.label === lastSkillName && r.node.metadata?.is_skill);
21
+ if (!skillNode)
22
+ return null;
23
+ const edges = this.graph.getEdgesFrom(skillNode.node.id);
24
+ let bestLabel = null;
25
+ let bestWeight = -1;
26
+ for (const edge of edges) {
27
+ const target = this.graph.getNode(edge.to_node);
28
+ if (target?.metadata?.is_skill && edge.weight > bestWeight) {
29
+ bestWeight = edge.weight;
30
+ bestLabel = target.label;
31
+ }
32
+ }
33
+ return bestLabel;
34
+ }
35
+ /**
36
+ * Get all possible next skills with their weights, sorted descending.
37
+ */
38
+ getNextOptions(lastSkillName) {
39
+ const results = this.graph.queryStructural({ limit: 100 });
40
+ const skillNode = results.find((r) => r.node.label === lastSkillName && r.node.metadata?.is_skill);
41
+ if (!skillNode)
42
+ return [];
43
+ const edges = this.graph.getEdgesFrom(skillNode.node.id);
44
+ const options = [];
45
+ for (const edge of edges) {
46
+ const target = this.graph.getNode(edge.to_node);
47
+ if (target?.metadata?.is_skill) {
48
+ options.push({ skill: target.label, weight: edge.weight });
49
+ }
50
+ }
51
+ return options.sort((a, b) => b.weight - a.weight);
52
+ }
53
+ }
54
+ //# sourceMappingURL=WorkflowSuggestionEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowSuggestionEngine.js","sourceRoot":"","sources":["../../src/engine/WorkflowSuggestionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,OAAO,wBAAwB;IACf;IAApB,YAAoB,KAAqB;QAArB,UAAK,GAAL,KAAK,CAAgB;IAAG,CAAC;IAE7C;;;;OAIG;IACH,OAAO,CAAC,aAAqB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CACnE,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC3D,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;gBACzB,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,aAAqB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CACnE,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAA6C,EAAE,CAAC;QAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ import type { SQLiteAdapter, AliasRecord } from '../storage/adapters/SQLiteAdapter.js';
2
+ export declare class AliasIndex {
3
+ private adapter;
4
+ constructor(adapter: SQLiteAdapter);
5
+ /**
6
+ * Register an alias for a node.
7
+ * Normalizes alias to lowercase.
8
+ */
9
+ add(alias: string, nodeId: string, confidence?: number): void;
10
+ /**
11
+ * Remove an alias.
12
+ */
13
+ remove(alias: string, nodeId: string): void;
14
+ /**
15
+ * Find nodes by exact alias match.
16
+ */
17
+ findExact(alias: string): AliasRecord[];
18
+ /**
19
+ * Get all aliases for a node.
20
+ */
21
+ getAliases(nodeId: string): AliasRecord[];
22
+ /**
23
+ * Generate common abbreviations for a label.
24
+ * "Acme Corp" -> ["acme corp", "acme", "ac"]
25
+ * "John Smith" -> ["john smith", "john", "js"]
26
+ */
27
+ generateAbbreviations(label: string): string[];
28
+ /**
29
+ * Register a node with its label and auto-generated abbreviations.
30
+ */
31
+ registerNode(nodeId: string, label: string): void;
32
+ /**
33
+ * Fuzzy scan: find aliases that contain the query string.
34
+ * Returns matches sorted by confidence desc.
35
+ */
36
+ fuzzyFind(query: string): AliasRecord[];
37
+ private normalize;
38
+ }
39
+ //# sourceMappingURL=AliasIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AliasIndex.d.ts","sourceRoot":"","sources":["../../src/entity/AliasIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEvF,qBAAa,UAAU;IACT,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa;IAE1C;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY,GAAG,IAAI;IAIlE;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAIvC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE;IAIzC;;;;OAIG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAkB9C;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOjD;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAcvC,OAAO,CAAC,SAAS;CAGlB"}
@@ -0,0 +1,81 @@
1
+ export class AliasIndex {
2
+ adapter;
3
+ constructor(adapter) {
4
+ this.adapter = adapter;
5
+ }
6
+ /**
7
+ * Register an alias for a node.
8
+ * Normalizes alias to lowercase.
9
+ */
10
+ add(alias, nodeId, confidence = 1.0) {
11
+ this.adapter.insertAlias(this.normalize(alias), nodeId, confidence);
12
+ }
13
+ /**
14
+ * Remove an alias.
15
+ */
16
+ remove(alias, nodeId) {
17
+ this.adapter.deleteAlias(this.normalize(alias), nodeId);
18
+ }
19
+ /**
20
+ * Find nodes by exact alias match.
21
+ */
22
+ findExact(alias) {
23
+ return this.adapter.findByAlias(this.normalize(alias));
24
+ }
25
+ /**
26
+ * Get all aliases for a node.
27
+ */
28
+ getAliases(nodeId) {
29
+ return this.adapter.getAliases(nodeId);
30
+ }
31
+ /**
32
+ * Generate common abbreviations for a label.
33
+ * "Acme Corp" -> ["acme corp", "acme", "ac"]
34
+ * "John Smith" -> ["john smith", "john", "js"]
35
+ */
36
+ generateAbbreviations(label) {
37
+ const normalized = this.normalize(label);
38
+ const words = normalized.split(/\s+/).filter(Boolean);
39
+ const results = [normalized];
40
+ if (words.length > 1) {
41
+ // First word only
42
+ results.push(words[0]);
43
+ // Initials
44
+ const initials = words.map((w) => w[0]).join('');
45
+ if (initials.length >= 2) {
46
+ results.push(initials);
47
+ }
48
+ }
49
+ return [...new Set(results)];
50
+ }
51
+ /**
52
+ * Register a node with its label and auto-generated abbreviations.
53
+ */
54
+ registerNode(nodeId, label) {
55
+ const abbreviations = this.generateAbbreviations(label);
56
+ for (const abbr of abbreviations) {
57
+ this.add(abbr, nodeId, abbr === this.normalize(label) ? 1.0 : 0.9);
58
+ }
59
+ }
60
+ /**
61
+ * Fuzzy scan: find aliases that contain the query string.
62
+ * Returns matches sorted by confidence desc.
63
+ */
64
+ fuzzyFind(query) {
65
+ // This does a full scan via SQL LIKE — fine for reasonable alias counts
66
+ const normalized = this.normalize(query);
67
+ // We'll use the adapter to get ALL aliases and filter.
68
+ // For Phase 1 this is acceptable; can be optimized with FTS later.
69
+ const allForQuery = this.adapter.findByAlias(normalized);
70
+ if (allForQuery.length > 0)
71
+ return allForQuery;
72
+ // No exact match — try prefix/contains via a scan
73
+ // This requires a new adapter method or manual scan
74
+ // For now, return empty — fuzzy matching will be done via embeddings in NodeResolutionService
75
+ return [];
76
+ }
77
+ normalize(s) {
78
+ return s.toLowerCase().trim();
79
+ }
80
+ }
81
+ //# sourceMappingURL=AliasIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AliasIndex.js","sourceRoot":"","sources":["../../src/entity/AliasIndex.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IACD;IAApB,YAAoB,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAE9C;;;OAGG;IACH,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,aAAqB,GAAG;QACzD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,qBAAqB,CAAC,KAAa;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,OAAO,GAAa,CAAC,UAAU,CAAC,CAAC;QAEvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,kBAAkB;YAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,WAAW;YACX,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc,EAAE,KAAa;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAa;QACrB,wEAAwE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,uDAAuD;QACvD,mEAAmE;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,WAAW,CAAC;QAE/C,kDAAkD;QAClD,oDAAoD;QACpD,8FAA8F;QAC9F,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,SAAS,CAAC,CAAS;QACzB,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * ContextActivator — 4-method context activation for 0agent Phase 4.
3
+ *
4
+ * Combines keyword matching, semantic similarity, entity-adjacent graph
5
+ * traversal, and recency boosting to surface the most relevant context
6
+ * nodes for the current input.
7
+ */
8
+ import type { KnowledgeGraph } from '../graph/KnowledgeGraph.js';
9
+ import type { HNSWIndex } from '../embedding/HNSWIndex.js';
10
+ import type { MultimodalEmbedder } from '../embedding/MultimodalEmbedder.js';
11
+ export interface ActivationConfig {
12
+ keyword_weight: number;
13
+ semantic_weight: number;
14
+ adjacent_weight: number;
15
+ recency_weight: number;
16
+ top_k: number;
17
+ }
18
+ export interface ActivationScore {
19
+ node_id: string;
20
+ score: number;
21
+ reasons: Array<'keyword' | 'semantic' | 'adjacent' | 'recency'>;
22
+ }
23
+ export declare class ContextActivator {
24
+ private graph;
25
+ private embedder;
26
+ private hnswIndex;
27
+ private config;
28
+ constructor(graph: KnowledgeGraph, embedder: MultimodalEmbedder | null, hnswIndex: HNSWIndex | null, config?: Partial<ActivationConfig>);
29
+ /**
30
+ * Activate context by combining 4 scoring methods.
31
+ * Returns top_k node IDs ordered by score.
32
+ */
33
+ activate(entityIds: string[], input: string, recentNodeIds?: string[]): Promise<string[]>;
34
+ /**
35
+ * Method 1: Tokenize input, find nodes whose labels contain overlapping tokens.
36
+ */
37
+ private keywordMatch;
38
+ /**
39
+ * Method 2: HNSW search using input embedding.
40
+ */
41
+ private semanticMatch;
42
+ /**
43
+ * Method 3: 2-hop neighbors of resolved entity IDs.
44
+ * 1st hop gets full adjacent_weight, 2nd hop gets 0.5x.
45
+ */
46
+ private adjacentMatch;
47
+ /**
48
+ * Method 4: Boost recently accessed node IDs.
49
+ */
50
+ private recencyBoost;
51
+ private tokenize;
52
+ }
53
+ //# sourceMappingURL=ContextActivator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextActivator.d.ts","sourceRoot":"","sources":["../../src/entity/ContextActivator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAI7E,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;CACjE;AA8BD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,MAAM,CAAmB;gBAG/B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAQpC;;;OAGG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IA2CpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAsBpB;;OAEG;YACW,aAAa;IAgB3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,QAAQ;CAMjB"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * ContextActivator — 4-method context activation for 0agent Phase 4.
3
+ *
4
+ * Combines keyword matching, semantic similarity, entity-adjacent graph
5
+ * traversal, and recency boosting to surface the most relevant context
6
+ * nodes for the current input.
7
+ */
8
+ const DEFAULT_CONFIG = {
9
+ keyword_weight: 1.0,
10
+ semantic_weight: 0.8,
11
+ adjacent_weight: 0.6,
12
+ recency_weight: 0.4,
13
+ top_k: 10,
14
+ };
15
+ // ─── Stop words for keyword matching ───────────────────────
16
+ const STOP_WORDS = new Set([
17
+ 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
18
+ 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
19
+ 'should', 'may', 'might', 'can', 'shall', 'to', 'of', 'in', 'for',
20
+ 'on', 'with', 'at', 'by', 'from', 'as', 'into', 'through', 'during',
21
+ 'before', 'after', 'above', 'below', 'between', 'out', 'off', 'over',
22
+ 'under', 'again', 'further', 'then', 'once', 'and', 'but', 'or',
23
+ 'nor', 'not', 'so', 'yet', 'both', 'either', 'neither', 'each',
24
+ 'every', 'all', 'any', 'few', 'more', 'most', 'other', 'some',
25
+ 'such', 'no', 'only', 'own', 'same', 'than', 'too', 'very',
26
+ 'just', 'because', 'if', 'when', 'where', 'how', 'what', 'which',
27
+ 'who', 'whom', 'this', 'that', 'these', 'those', 'i', 'me', 'my',
28
+ 'we', 'our', 'you', 'your', 'he', 'him', 'his', 'she', 'her',
29
+ 'it', 'its', 'they', 'them', 'their',
30
+ ]);
31
+ // ─── Class ─────────────────────────────────────────────────
32
+ export class ContextActivator {
33
+ graph;
34
+ embedder;
35
+ hnswIndex;
36
+ config;
37
+ constructor(graph, embedder, hnswIndex, config) {
38
+ this.graph = graph;
39
+ this.embedder = embedder;
40
+ this.hnswIndex = hnswIndex;
41
+ this.config = { ...DEFAULT_CONFIG, ...config };
42
+ }
43
+ /**
44
+ * Activate context by combining 4 scoring methods.
45
+ * Returns top_k node IDs ordered by score.
46
+ */
47
+ async activate(entityIds, input, recentNodeIds) {
48
+ const scoreMap = new Map();
49
+ const addScore = (nodeId, score, reason) => {
50
+ const existing = scoreMap.get(nodeId);
51
+ if (existing) {
52
+ existing.score += score;
53
+ if (!existing.reasons.includes(reason)) {
54
+ existing.reasons.push(reason);
55
+ }
56
+ }
57
+ else {
58
+ scoreMap.set(nodeId, { node_id: nodeId, score, reasons: [reason] });
59
+ }
60
+ };
61
+ // ── Method 1: Keyword match (weight 1.0) ───────────────
62
+ this.keywordMatch(input, addScore);
63
+ // ── Method 2: Semantic similarity (weight 0.8) ─────────
64
+ await this.semanticMatch(input, addScore);
65
+ // ── Method 3: Entity-adjacent (weight 0.6) ─────────────
66
+ this.adjacentMatch(entityIds, addScore);
67
+ // ── Method 4: Recency boost (weight 0.4) ───────────────
68
+ if (recentNodeIds && recentNodeIds.length > 0) {
69
+ this.recencyBoost(recentNodeIds, addScore);
70
+ }
71
+ // Merge and return top_k
72
+ const sorted = Array.from(scoreMap.values())
73
+ .sort((a, b) => b.score - a.score)
74
+ .slice(0, this.config.top_k);
75
+ return sorted.map((s) => s.node_id);
76
+ }
77
+ // ─── Private scoring methods ─────────────────────────────
78
+ /**
79
+ * Method 1: Tokenize input, find nodes whose labels contain overlapping tokens.
80
+ */
81
+ keywordMatch(input, addScore) {
82
+ const tokens = this.tokenize(input);
83
+ if (tokens.length === 0)
84
+ return;
85
+ // Query a broad set of nodes to check label overlap
86
+ const candidates = this.graph.queryStructural({ limit: 200 });
87
+ for (const result of candidates) {
88
+ const labelTokens = this.tokenize(result.node.label);
89
+ const overlap = labelTokens.filter((t) => tokens.includes(t));
90
+ if (overlap.length > 0) {
91
+ const score = (overlap.length / Math.max(labelTokens.length, 1)) *
92
+ this.config.keyword_weight;
93
+ addScore(result.node.id, score, 'keyword');
94
+ }
95
+ }
96
+ }
97
+ /**
98
+ * Method 2: HNSW search using input embedding.
99
+ */
100
+ async semanticMatch(input, addScore) {
101
+ if (!this.embedder?.isAvailable || !this.hnswIndex)
102
+ return;
103
+ const queryEmb = await this.embedder.embedText(input);
104
+ if (!queryEmb)
105
+ return;
106
+ const results = this.hnswIndex.search(queryEmb, this.config.top_k * 2);
107
+ for (const hit of results) {
108
+ const score = hit.similarity * this.config.semantic_weight;
109
+ addScore(hit.id, score, 'semantic');
110
+ }
111
+ }
112
+ /**
113
+ * Method 3: 2-hop neighbors of resolved entity IDs.
114
+ * 1st hop gets full adjacent_weight, 2nd hop gets 0.5x.
115
+ */
116
+ adjacentMatch(entityIds, addScore) {
117
+ const visited = new Set(entityIds);
118
+ // 1st hop
119
+ const firstHopIds = [];
120
+ for (const entityId of entityIds) {
121
+ const edges = this.graph.getEdgesByNode(entityId, 'both');
122
+ for (const edge of edges) {
123
+ const neighborId = edge.from_node === entityId ? edge.to_node : edge.from_node;
124
+ if (!visited.has(neighborId)) {
125
+ visited.add(neighborId);
126
+ firstHopIds.push(neighborId);
127
+ addScore(neighborId, this.config.adjacent_weight, 'adjacent');
128
+ }
129
+ }
130
+ }
131
+ // 2nd hop (0.5x weight)
132
+ for (const hopId of firstHopIds) {
133
+ const edges = this.graph.getEdgesByNode(hopId, 'both');
134
+ for (const edge of edges) {
135
+ const neighborId = edge.from_node === hopId ? edge.to_node : edge.from_node;
136
+ if (!visited.has(neighborId)) {
137
+ visited.add(neighborId);
138
+ addScore(neighborId, this.config.adjacent_weight * 0.5, 'adjacent');
139
+ }
140
+ }
141
+ }
142
+ }
143
+ /**
144
+ * Method 4: Boost recently accessed node IDs.
145
+ */
146
+ recencyBoost(recentNodeIds, addScore) {
147
+ // More recent = higher boost; linear decay over the list
148
+ const total = recentNodeIds.length;
149
+ for (let i = 0; i < total; i++) {
150
+ const recencyFactor = (i + 1) / total; // newer items are at end
151
+ const score = recencyFactor * this.config.recency_weight;
152
+ addScore(recentNodeIds[i], score, 'recency');
153
+ }
154
+ }
155
+ // ─── Utility ─────────────────────────────────────────────
156
+ tokenize(text) {
157
+ return text
158
+ .toLowerCase()
159
+ .split(/\W+/)
160
+ .filter((t) => t.length >= 2 && !STOP_WORDS.has(t));
161
+ }
162
+ }
163
+ //# sourceMappingURL=ContextActivator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextActivator.js","sourceRoot":"","sources":["../../src/entity/ContextActivator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { type GraphNode } from '../graph/GraphNode.js';
2
+ import type { KnowledgeGraph } from '../graph/KnowledgeGraph.js';
3
+ export interface EntityContext {
4
+ entity: GraphNode;
5
+ personal_subgraph_ids: string[];
6
+ parent_entities: GraphNode[];
7
+ shared_subgraph_ids: string[];
8
+ merged_context: GraphNode[];
9
+ }
10
+ export interface VisibilityPolicy {
11
+ allow_work_context: boolean;
12
+ allow_signal_nodes: boolean;
13
+ allow_personality_profile: boolean;
14
+ allow_raw_conversations: boolean;
15
+ }
16
+ export declare const DEFAULT_VISIBILITY_POLICY: VisibilityPolicy;
17
+ export declare class EntityHierarchy {
18
+ private graph;
19
+ private policy;
20
+ constructor(graph: KnowledgeGraph, policy?: VisibilityPolicy);
21
+ /**
22
+ * Get all parent entities for an entity (via MEMBER_OF edges, forward direction).
23
+ * Sarah is MEMBER_OF Acme Corp → Acme Corp is Sarah's parent.
24
+ */
25
+ getParents(entityId: string): GraphNode[];
26
+ /**
27
+ * Get all child entities (members) of an entity.
28
+ * Acme Corp has MEMBER_OF edges from employees → Acme Corp.
29
+ */
30
+ getMembers(entityId: string): GraphNode[];
31
+ /**
32
+ * Load full entity context for a session:
33
+ * - Person's own subgraph (private, full access)
34
+ * - Parent entities' subgraphs (company — filtered by policy)
35
+ */
36
+ loadEntityContext(entityId: string): EntityContext;
37
+ /**
38
+ * What nodes from a parent entity are visible to the child.
39
+ * Applies policy: strategy/plan/context nodes are shared; personality is not.
40
+ */
41
+ private isVisibleToChild;
42
+ /**
43
+ * Propagate a signal from a child entity UP to parent entities (attenuated).
44
+ * Called after an interaction completes. Company sees "Sarah worked on auth" but not the raw chat.
45
+ */
46
+ propagateSignalUp(childEntityId: string, signalLabel: string, signalData: string, attenuation?: number): void;
47
+ }
48
+ //# sourceMappingURL=EntityHierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityHierarchy.d.ts","sourceRoot":"","sources":["../../src/entity/EntityHierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,EAAE,SAAS,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAE/B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,yBAAyB,EAAE,OAAO,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAKvC,CAAC;AAEF,qBAAa,eAAe;IAExB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;gBADN,KAAK,EAAE,cAAc,EACrB,MAAM,GAAE,gBAA4C;IAG9D;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAUzC;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IASzC;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa;IAiClD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;;OAGG;IACH,iBAAiB,CACf,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAY,GACxB,IAAI;CAwCR"}