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,48 @@
1
+ export class OpenAIAdapter {
2
+ dimensions = 1536;
3
+ modelName = 'text-embedding-3-small';
4
+ apiKey;
5
+ baseUrl;
6
+ constructor(opts) {
7
+ this.apiKey = opts.apiKey;
8
+ this.baseUrl = opts.baseUrl ?? 'https://api.openai.com/v1';
9
+ }
10
+ async embed(text) {
11
+ const resp = await fetch(`${this.baseUrl}/embeddings`, {
12
+ method: 'POST',
13
+ headers: {
14
+ 'Content-Type': 'application/json',
15
+ 'Authorization': `Bearer ${this.apiKey}`,
16
+ },
17
+ body: JSON.stringify({
18
+ model: this.modelName,
19
+ input: text,
20
+ }),
21
+ });
22
+ if (!resp.ok) {
23
+ throw new Error(`OpenAI embedding failed: ${resp.status}`);
24
+ }
25
+ const data = (await resp.json());
26
+ return new Float32Array(data.data[0].embedding);
27
+ }
28
+ async embedBatch(texts) {
29
+ // OpenAI supports batch in a single request
30
+ const resp = await fetch(`${this.baseUrl}/embeddings`, {
31
+ method: 'POST',
32
+ headers: {
33
+ 'Content-Type': 'application/json',
34
+ 'Authorization': `Bearer ${this.apiKey}`,
35
+ },
36
+ body: JSON.stringify({
37
+ model: this.modelName,
38
+ input: texts,
39
+ }),
40
+ });
41
+ if (!resp.ok) {
42
+ throw new Error(`OpenAI embedding batch failed: ${resp.status}`);
43
+ }
44
+ const data = (await resp.json());
45
+ return data.data.map((d) => new Float32Array(d.embedding));
46
+ }
47
+ }
48
+ //# sourceMappingURL=OpenAIAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAIAdapter.js","sourceRoot":"","sources":["../../../src/embedding/adapters/OpenAIAdapter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACf,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,wBAAwB,CAAC;IACtC,MAAM,CAAS;IACf,OAAO,CAAS;IAExB,YAAY,IAA0C;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,2BAA2B,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACzC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,KAAK,EAAE,IAAI;aACZ,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA6C,CAAC;QAC7E,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,4CAA4C;QAC5C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACzC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,KAAK,EAAE,KAAK;aACb,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA6C,CAAC;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * CreditAttribution — 3-layer credit attribution with DAG for 0agent Phase 4.
3
+ *
4
+ * Layer 1: Tier separation (attribution_grade vs scan_only)
5
+ * Layer 2: Per-edge credit computation via WeightPropagation
6
+ * Layer 3: DAG backward pass with competing-edge penalty
7
+ */
8
+ import type { KnowledgeGraph } from '../graph/KnowledgeGraph.js';
9
+ import type { WeightPropagation, OutcomeSignal } from './WeightPropagation.js';
10
+ import type { TraversalLedger } from '../trace/TraversalLedger.js';
11
+ import type { AttributionResult } from '../trace/OutcomeTrace.js';
12
+ export interface DAGNode {
13
+ edge_id: string;
14
+ parents: string[];
15
+ children: string[];
16
+ base_credit: number;
17
+ final_credit: number;
18
+ }
19
+ export interface AttributionConfig {
20
+ /** Penalty applied when competing edges exist at the same source node */
21
+ competing_edge_penalty: number;
22
+ /** Credit split factor when multiple ambiguous paths lead to same outcome */
23
+ ambiguity_split: number;
24
+ /** Minimum weight margin to qualify for attribution_grade tier */
25
+ min_attribution_grade_delta: number;
26
+ }
27
+ export declare class CreditAttribution {
28
+ private propagation;
29
+ private config;
30
+ constructor(propagation: WeightPropagation, config?: Partial<AttributionConfig>);
31
+ /**
32
+ * Attribute credit for a completed trace across all traversed edges.
33
+ */
34
+ attribute(ledger: TraversalLedger, outcome: OutcomeSignal, graph: KnowledgeGraph): Promise<AttributionResult[]>;
35
+ private computeEntryCredit;
36
+ /**
37
+ * Build a DAG from attribution_grade entries based on step ordering
38
+ * and edge connectivity in the graph.
39
+ */
40
+ private buildDAG;
41
+ /**
42
+ * Backward pass through DAG: adjust credit for ambiguous paths
43
+ * and apply competing edge penalty.
44
+ */
45
+ private backwardPass;
46
+ }
47
+ //# sourceMappingURL=CreditAttribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreditAttribution.d.ts","sourceRoot":"","sources":["../../src/engine/CreditAttribution.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAc,MAAM,wBAAwB,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAUD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAoB;gBAGhC,WAAW,EAAE,iBAAiB,EAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAMrC;;OAEG;IACG,SAAS,CACb,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwC/B,OAAO,CAAC,kBAAkB;IAuC1B;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAsDhB;;;OAGG;IACH,OAAO,CAAC,YAAY;CA4ErB"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * CreditAttribution — 3-layer credit attribution with DAG for 0agent Phase 4.
3
+ *
4
+ * Layer 1: Tier separation (attribution_grade vs scan_only)
5
+ * Layer 2: Per-edge credit computation via WeightPropagation
6
+ * Layer 3: DAG backward pass with competing-edge penalty
7
+ */
8
+ const DEFAULT_CONFIG = {
9
+ competing_edge_penalty: -0.3,
10
+ ambiguity_split: 0.5,
11
+ min_attribution_grade_delta: 0.1,
12
+ };
13
+ // ─── Class ─────────────────────────────────────────────────
14
+ export class CreditAttribution {
15
+ propagation;
16
+ config;
17
+ constructor(propagation, config) {
18
+ this.propagation = propagation;
19
+ this.config = { ...DEFAULT_CONFIG, ...config };
20
+ }
21
+ /**
22
+ * Attribute credit for a completed trace across all traversed edges.
23
+ */
24
+ async attribute(ledger, outcome, graph) {
25
+ const allEntries = ledger.getAll();
26
+ if (allEntries.length === 0)
27
+ return [];
28
+ // ── Layer 1: Tier separation ───────────────────────────
29
+ const attributionGrade = allEntries.filter((e) => e.tier === 'attribution_grade');
30
+ const scanOnly = allEntries.filter((e) => e.tier === 'scan_only');
31
+ // ── Layer 2: Per-edge credit computation ───────────────
32
+ const results = [];
33
+ for (const entry of attributionGrade) {
34
+ const result = this.computeEntryCredit(entry, outcome, graph);
35
+ if (result)
36
+ results.push(result);
37
+ }
38
+ // scan_only entries get zero credit but are still recorded
39
+ for (const entry of scanOnly) {
40
+ results.push({
41
+ edge_id: entry.edge_id,
42
+ tier: 'scan_only',
43
+ credit: 0,
44
+ influence: 0,
45
+ discount: 0,
46
+ old_weight: entry.weight_at_traversal,
47
+ new_weight: entry.weight_at_traversal,
48
+ });
49
+ }
50
+ // ── Layer 3: DAG backward pass ─────────────────────────
51
+ const dagNodes = this.buildDAG(attributionGrade, graph);
52
+ this.backwardPass(dagNodes, results);
53
+ return results;
54
+ }
55
+ // ─── Private helpers ─────────────────────────────────────
56
+ computeEntryCredit(entry, outcome, graph) {
57
+ const edge = graph.getEdge(entry.edge_id);
58
+ if (!edge)
59
+ return null;
60
+ // Get competing edges (siblings from same source node)
61
+ const siblings = graph.getEdgesFrom(edge.from_node);
62
+ const competing = siblings.filter((e) => e.id !== edge.id);
63
+ const influence = this.propagation.computeInfluence(edge, competing);
64
+ const stepLedger = {
65
+ edge_id: entry.edge_id,
66
+ step_index: entry.step_index,
67
+ has_sub_outcome: entry.has_sub_outcome,
68
+ weight_at_traversal: entry.weight_at_traversal,
69
+ };
70
+ const discount = this.propagation.computeDiscount(stepLedger);
71
+ const credit = this.propagation.computeCredit(outcome.value, influence, discount);
72
+ return {
73
+ edge_id: entry.edge_id,
74
+ tier: 'attribution_grade',
75
+ credit,
76
+ influence,
77
+ discount,
78
+ old_weight: edge.weight,
79
+ new_weight: edge.weight, // actual weight update happens in propagation
80
+ };
81
+ }
82
+ /**
83
+ * Build a DAG from attribution_grade entries based on step ordering
84
+ * and edge connectivity in the graph.
85
+ */
86
+ buildDAG(entries, graph) {
87
+ const dagNodes = new Map();
88
+ // Sort by step_index to establish ordering
89
+ const sorted = [...entries].sort((a, b) => a.step_index - b.step_index);
90
+ // Create DAG nodes
91
+ for (const entry of sorted) {
92
+ dagNodes.set(entry.edge_id, {
93
+ edge_id: entry.edge_id,
94
+ parents: [],
95
+ children: [],
96
+ base_credit: 0,
97
+ final_credit: 0,
98
+ });
99
+ }
100
+ // Establish parent-child relationships based on graph connectivity
101
+ const edgeIds = new Set(sorted.map((e) => e.edge_id));
102
+ for (const entry of sorted) {
103
+ const edge = graph.getEdge(entry.edge_id);
104
+ if (!edge)
105
+ continue;
106
+ // Find edges in our set that feed into this edge's source node
107
+ for (const otherEntry of sorted) {
108
+ if (otherEntry.edge_id === entry.edge_id)
109
+ continue;
110
+ if (otherEntry.step_index >= entry.step_index)
111
+ continue;
112
+ const otherEdge = graph.getEdge(otherEntry.edge_id);
113
+ if (!otherEdge)
114
+ continue;
115
+ // otherEdge leads to the source of this edge
116
+ if (otherEdge.to_node === edge.from_node) {
117
+ const dagNode = dagNodes.get(entry.edge_id);
118
+ const parentNode = dagNodes.get(otherEntry.edge_id);
119
+ if (!dagNode.parents.includes(otherEntry.edge_id)) {
120
+ dagNode.parents.push(otherEntry.edge_id);
121
+ }
122
+ if (!parentNode.children.includes(entry.edge_id)) {
123
+ parentNode.children.push(entry.edge_id);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ return dagNodes;
129
+ }
130
+ /**
131
+ * Backward pass through DAG: adjust credit for ambiguous paths
132
+ * and apply competing edge penalty.
133
+ */
134
+ backwardPass(dagNodes, results) {
135
+ // Map results by edge_id for lookup
136
+ const resultMap = new Map();
137
+ for (const r of results) {
138
+ resultMap.set(r.edge_id, r);
139
+ }
140
+ // Set base credits from computed results
141
+ for (const [edgeId, dagNode] of dagNodes) {
142
+ const result = resultMap.get(edgeId);
143
+ if (result) {
144
+ dagNode.base_credit = result.credit;
145
+ dagNode.final_credit = result.credit;
146
+ }
147
+ }
148
+ // Backward pass: process nodes from leaves to roots
149
+ const processed = new Set();
150
+ const toProcess = [...dagNodes.keys()];
151
+ // Process leaf nodes first (no children), then work backward
152
+ while (toProcess.length > 0) {
153
+ const nextBatch = [];
154
+ for (const edgeId of toProcess) {
155
+ const dagNode = dagNodes.get(edgeId);
156
+ // Can process if all children are already processed
157
+ const allChildrenDone = dagNode.children.every((c) => processed.has(c));
158
+ if (allChildrenDone) {
159
+ // Apply ambiguity split: if multiple parents feed into the same
160
+ // child, split the child's credit among parents
161
+ for (const childId of dagNode.children) {
162
+ const childDag = dagNodes.get(childId);
163
+ if (childDag && childDag.parents.length > 1) {
164
+ // Multiple parents — apply ambiguity split
165
+ dagNode.final_credit *= this.config.ambiguity_split;
166
+ }
167
+ }
168
+ // Apply competing edge penalty if this node has siblings in the DAG
169
+ // that share the same parent
170
+ for (const parentId of dagNode.parents) {
171
+ const parentDag = dagNodes.get(parentId);
172
+ if (parentDag && parentDag.children.length > 1) {
173
+ dagNode.final_credit += this.config.competing_edge_penalty;
174
+ }
175
+ }
176
+ // Update the result
177
+ const result = resultMap.get(edgeId);
178
+ if (result) {
179
+ result.credit = dagNode.final_credit;
180
+ }
181
+ processed.add(edgeId);
182
+ }
183
+ else {
184
+ nextBatch.push(edgeId);
185
+ }
186
+ }
187
+ // Safety: if no progress, break to avoid infinite loop
188
+ if (nextBatch.length === toProcess.length) {
189
+ break;
190
+ }
191
+ toProcess.length = 0;
192
+ toProcess.push(...nextBatch);
193
+ }
194
+ }
195
+ }
196
+ //# sourceMappingURL=CreditAttribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreditAttribution.js","sourceRoot":"","sources":["../../src/engine/CreditAttribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { KnowledgeGraph } from '../graph/KnowledgeGraph.js';
2
+ import type { GraphEdge } from '../graph/GraphEdge.js';
3
+ import type { EdgeWeightUpdater } from '../concurrency/EdgeWeightUpdater.js';
4
+ export interface DecayConfig {
5
+ interval_ms: number;
6
+ max_deferral_ms: number;
7
+ grace_period_ms: number;
8
+ max_delta_per_cycle: number;
9
+ }
10
+ export interface DecayReport {
11
+ edges_processed: number;
12
+ edges_decayed: number;
13
+ edges_skipped_locked: number;
14
+ edges_skipped_grace: number;
15
+ edges_skipped_neutral: number;
16
+ }
17
+ export declare class DecayScheduler {
18
+ private graph;
19
+ private updater;
20
+ private config;
21
+ private lastRun;
22
+ private deferredSince;
23
+ constructor(graph: KnowledgeGraph, updater: EdgeWeightUpdater, config?: Partial<DecayConfig>);
24
+ /**
25
+ * Compute decay for a single edge.
26
+ * Returns new weight or null if no decay needed.
27
+ *
28
+ * Rules:
29
+ * - Locked edges: skip (return null)
30
+ * - Weight exactly 0.5: skip (already neutral)
31
+ * - Within grace period (48h since last_traversed): skip
32
+ * - Delta = min(decay_rate * |weight - 0.5| * hours_elapsed, max_delta)
33
+ * - Direction: toward 0.5 (positive if below, negative if above)
34
+ * - NEVER cross 0.5 in a single step (clamp)
35
+ */
36
+ decayEdge(edge: GraphEdge, now: number): number | null;
37
+ /**
38
+ * Run a full decay cycle over all edges.
39
+ * Can be deferred if active sessions exist, but max 24h deferral.
40
+ */
41
+ runCycle(now?: number, canDefer?: boolean): Promise<DecayReport>;
42
+ shouldRun(now?: number): boolean;
43
+ getLastRun(): number;
44
+ }
45
+ //# sourceMappingURL=DecayScheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecayScheduler.d.ts","sourceRoot":"","sources":["../../src/engine/DecayScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,cAAc;IAMvB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,aAAa,CAAuB;gBAGlC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,iBAAiB,EAClC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAU/B;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAwBtD;;;OAGG;IACG,QAAQ,CAAC,GAAG,GAAE,MAAmB,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IA6DzF,SAAS,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO;IAI5C,UAAU,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,115 @@
1
+ export class DecayScheduler {
2
+ graph;
3
+ updater;
4
+ config;
5
+ lastRun = 0;
6
+ deferredSince = null;
7
+ constructor(graph, updater, config) {
8
+ this.graph = graph;
9
+ this.updater = updater;
10
+ this.config = {
11
+ interval_ms: config?.interval_ms ?? 6 * 60 * 60 * 1000,
12
+ max_deferral_ms: config?.max_deferral_ms ?? 24 * 60 * 60 * 1000,
13
+ grace_period_ms: config?.grace_period_ms ?? 48 * 60 * 60 * 1000,
14
+ max_delta_per_cycle: config?.max_delta_per_cycle ?? 0.05,
15
+ };
16
+ }
17
+ /**
18
+ * Compute decay for a single edge.
19
+ * Returns new weight or null if no decay needed.
20
+ *
21
+ * Rules:
22
+ * - Locked edges: skip (return null)
23
+ * - Weight exactly 0.5: skip (already neutral)
24
+ * - Within grace period (48h since last_traversed): skip
25
+ * - Delta = min(decay_rate * |weight - 0.5| * hours_elapsed, max_delta)
26
+ * - Direction: toward 0.5 (positive if below, negative if above)
27
+ * - NEVER cross 0.5 in a single step (clamp)
28
+ */
29
+ decayEdge(edge, now) {
30
+ if (edge.locked)
31
+ return null;
32
+ if (edge.weight === 0.5)
33
+ return null;
34
+ const lastTraversed = edge.last_traversed ?? edge.created_at;
35
+ const age = now - lastTraversed;
36
+ if (age < this.config.grace_period_ms)
37
+ return null;
38
+ const hoursElapsed = age / (60 * 60 * 1000);
39
+ const distanceFromNeutral = Math.abs(edge.weight - 0.5);
40
+ const rawDelta = edge.decay_rate * distanceFromNeutral * hoursElapsed;
41
+ const cappedDelta = Math.min(rawDelta, this.config.max_delta_per_cycle);
42
+ const direction = edge.weight > 0.5 ? -1 : 1;
43
+ const newWeight = edge.weight + direction * cappedDelta;
44
+ // Clamp: never cross 0.5
45
+ if (direction > 0) {
46
+ return Math.min(newWeight, 0.5);
47
+ }
48
+ else {
49
+ return Math.max(newWeight, 0.5);
50
+ }
51
+ }
52
+ /**
53
+ * Run a full decay cycle over all edges.
54
+ * Can be deferred if active sessions exist, but max 24h deferral.
55
+ */
56
+ async runCycle(now = Date.now(), canDefer = false) {
57
+ const emptyReport = {
58
+ edges_processed: 0,
59
+ edges_decayed: 0,
60
+ edges_skipped_locked: 0,
61
+ edges_skipped_grace: 0,
62
+ edges_skipped_neutral: 0,
63
+ };
64
+ // Check if we should defer
65
+ if (canDefer && this.deferredSince === null) {
66
+ this.deferredSince = now;
67
+ return emptyReport;
68
+ }
69
+ // Force run if deferred too long
70
+ if (this.deferredSince && (now - this.deferredSince) > this.config.max_deferral_ms) {
71
+ canDefer = false;
72
+ }
73
+ if (canDefer) {
74
+ return emptyReport;
75
+ }
76
+ const report = {
77
+ edges_processed: 0,
78
+ edges_decayed: 0,
79
+ edges_skipped_locked: 0,
80
+ edges_skipped_grace: 0,
81
+ edges_skipped_neutral: 0,
82
+ };
83
+ const edges = this.graph.getAllEdges();
84
+ for (const edge of edges) {
85
+ report.edges_processed++;
86
+ if (edge.locked) {
87
+ report.edges_skipped_locked++;
88
+ continue;
89
+ }
90
+ if (edge.weight === 0.5) {
91
+ report.edges_skipped_neutral++;
92
+ continue;
93
+ }
94
+ const newWeight = this.decayEdge(edge, now);
95
+ if (newWeight === null) {
96
+ report.edges_skipped_grace++;
97
+ continue;
98
+ }
99
+ if (newWeight !== edge.weight) {
100
+ await this.updater.update(edge.id, edge.weight, newWeight, 'time_decay');
101
+ report.edges_decayed++;
102
+ }
103
+ }
104
+ this.lastRun = now;
105
+ this.deferredSince = null;
106
+ return report;
107
+ }
108
+ shouldRun(now = Date.now()) {
109
+ return (now - this.lastRun) >= this.config.interval_ms;
110
+ }
111
+ getLastRun() {
112
+ return this.lastRun;
113
+ }
114
+ }
115
+ //# sourceMappingURL=DecayScheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecayScheduler.js","sourceRoot":"","sources":["../../src/engine/DecayScheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * InferenceEngine — Phase 4 full inference pipeline.
3
+ *
4
+ * Replaces the Phase 2 stub with:
5
+ * - Full entity resolution (pipeline or fallback)
6
+ * - Graph traversal with TraversalLedger recording
7
+ * - SelectionPolicy-based plan selection
8
+ * - Credit attribution and weight propagation on outcome
9
+ * - Skill metadata decoration
10
+ *
11
+ * The Phase 2 resolve() method is preserved for backward compatibility.
12
+ */
13
+ import type { KnowledgeGraph } from '../graph/KnowledgeGraph.js';
14
+ import type { NodeResolutionService } from '../entity/NodeResolutionService.js';
15
+ import type { SelectionPolicy } from './SelectionPolicy.js';
16
+ import type { TraversalLedger } from '../trace/TraversalLedger.js';
17
+ import type { AttributionResult } from '../trace/OutcomeTrace.js';
18
+ import type { WeightPropagation } from './WeightPropagation.js';
19
+ import type { EdgeWeightUpdater } from '../concurrency/EdgeWeightUpdater.js';
20
+ export interface IInferenceEngine {
21
+ resolve(task: string, context?: Record<string, unknown>): Promise<InferencePlan>;
22
+ }
23
+ export interface InferencePlan {
24
+ task: string;
25
+ resolved_entities: ResolvedEntity[];
26
+ selected_edge: SelectedEdge | null;
27
+ skill: string | null;
28
+ confidence: number;
29
+ reasoning: string;
30
+ }
31
+ export interface ResolvedEntity {
32
+ mention: string;
33
+ node_id: string;
34
+ confidence: number;
35
+ match_type: 'exact' | 'alias' | 'fuzzy' | 'created';
36
+ }
37
+ export interface SelectedEdge {
38
+ edge_id: string;
39
+ from_label: string;
40
+ to_label: string;
41
+ weight: number;
42
+ mode: 'exploit' | 'explore';
43
+ }
44
+ export interface InferenceRequest {
45
+ input: string;
46
+ session_id: string;
47
+ context?: Record<string, unknown>;
48
+ timeout_ms?: number;
49
+ }
50
+ export interface InferenceResult {
51
+ output: string;
52
+ trace_id: string;
53
+ entities_resolved: string[];
54
+ plan_selected: string[];
55
+ subagent_result?: unknown;
56
+ outcome_signal?: number;
57
+ deferred: boolean;
58
+ }
59
+ /**
60
+ * EntityResolutionPipeline contract — optional advanced pipeline.
61
+ * When not provided, the engine falls back to NodeResolutionService.
62
+ */
63
+ export interface EntityResolutionPipeline {
64
+ extractAndResolve(input: string, context?: Record<string, unknown>): Promise<ResolvedEntity[]>;
65
+ }
66
+ /**
67
+ * CreditAttribution contract — optional attribution engine.
68
+ * When not provided, weight updates are skipped.
69
+ */
70
+ export interface CreditAttribution {
71
+ attribute(ledger: TraversalLedger, outcomeSignal: number, traceId: string): Promise<AttributionResult[]>;
72
+ }
73
+ export declare class InferenceEngine implements IInferenceEngine {
74
+ private graph;
75
+ private resolver;
76
+ private policy;
77
+ private resolutionPipeline?;
78
+ private attribution?;
79
+ private propagation?;
80
+ private updater?;
81
+ constructor(graph: KnowledgeGraph, resolver: NodeResolutionService, policy: SelectionPolicy, resolutionPipeline?: EntityResolutionPipeline | undefined, attribution?: CreditAttribution | undefined, propagation?: WeightPropagation | undefined, updater?: EdgeWeightUpdater | undefined);
82
+ resolve(task: string, _context?: Record<string, unknown>): Promise<InferencePlan>;
83
+ infer(req: InferenceRequest): Promise<InferenceResult>;
84
+ /**
85
+ * Fallback entity resolution using the simple NodeResolutionService.
86
+ * Used when no EntityResolutionPipeline is provided.
87
+ */
88
+ private resolveEntitiesFallback;
89
+ /**
90
+ * Simple mention extraction: split task into potential entity names.
91
+ * Phase 4 EntityResolutionPipeline provides LLM-based NER as upgrade.
92
+ */
93
+ private extractMentions;
94
+ }
95
+ //# sourceMappingURL=InferenceEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InferenceEngine.d.ts","sourceRoot":"","sources":["../../src/engine/InferenceEngine.ts"],"names":[],"mappings":"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"}