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
package/bin/0agent.js ADDED
@@ -0,0 +1,614 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 0agent CLI entry point.
4
+ *
5
+ * This is the Node.js CLI — a thin wrapper that delegates to the daemon
6
+ * REST API for most commands, and handles init/start/stop locally.
7
+ *
8
+ * Usage:
9
+ * npx 0agent@latest # first run → triggers init wizard
10
+ * 0agent init # interactive setup wizard
11
+ * 0agent start # start daemon in background
12
+ * 0agent stop # stop daemon
13
+ * 0agent status # health check
14
+ * 0agent run "<task>" # submit task
15
+ * 0agent /review # run a skill (slash command)
16
+ * 0agent chat # interactive REPL
17
+ * 0agent skill list # list skills
18
+ * 0agent workflow suggest # next skill recommendation
19
+ * 0agent improve # self-improvement analysis
20
+ */
21
+
22
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
23
+ import { resolve, dirname } from 'node:path';
24
+ import { homedir, platform } from 'node:os';
25
+ import { spawn, execSync } from 'node:child_process';
26
+ import { createInterface } from 'node:readline';
27
+
28
+ const AGENT_DIR = resolve(homedir(), '.0agent');
29
+ const CONFIG_PATH = resolve(AGENT_DIR, 'config.yaml');
30
+ const PID_PATH = resolve(AGENT_DIR, 'daemon.pid');
31
+ const LOG_PATH = resolve(AGENT_DIR, 'logs', 'daemon.log');
32
+ const BASE_URL = process.env['ZEROAGENT_URL'] ?? 'http://localhost:4200';
33
+
34
+ const args = process.argv.slice(2);
35
+ const cmd = args[0] ?? '';
36
+
37
+ // ─── Slash command rewrite ────────────────────────────────────────────────
38
+ // 0agent /review → 0agent run --skill review
39
+ if (cmd.startsWith('/')) {
40
+ const skillName = cmd.slice(1);
41
+ const skillArgs = args.slice(1);
42
+ runSkill(skillName, skillArgs);
43
+ process.exit(0);
44
+ }
45
+
46
+ // ─── Command dispatch ────────────────────────────────────────────────────
47
+ switch (cmd) {
48
+ case '':
49
+ case 'init':
50
+ await runInit();
51
+ break;
52
+
53
+ case 'start':
54
+ await startDaemon();
55
+ break;
56
+
57
+ case 'stop':
58
+ stopDaemon();
59
+ break;
60
+
61
+ case 'status':
62
+ await showStatus();
63
+ break;
64
+
65
+ case 'run':
66
+ await runTask(args.slice(1));
67
+ break;
68
+
69
+ case 'chat':
70
+ await runChat();
71
+ break;
72
+
73
+ case 'skill':
74
+ await runSkillCommand(args.slice(1));
75
+ break;
76
+
77
+ case 'workflow':
78
+ await runWorkflowCommand(args.slice(1));
79
+ break;
80
+
81
+ case 'improve':
82
+ await runImprove(args.slice(1));
83
+ break;
84
+
85
+ case 'logs':
86
+ showLogs(args.slice(1));
87
+ break;
88
+
89
+ default:
90
+ showHelp();
91
+ break;
92
+ }
93
+
94
+ // ─── Init wizard ─────────────────────────────────────────────────────────
95
+
96
+ async function runInit() {
97
+ console.log('\n ┌─────────────────────────────────────────┐');
98
+ console.log(' │ │');
99
+ console.log(' │ 0agent — An agent that learns. │');
100
+ console.log(' │ │');
101
+ console.log(' │ v1.0.0 · Apache 2.0 │');
102
+ console.log(' └─────────────────────────────────────────┘\n');
103
+
104
+ // Check if already initialised
105
+ if (existsSync(CONFIG_PATH)) {
106
+ const answer = await ask('Config already exists. Reinitialise? [y/N] ');
107
+ if (answer.toLowerCase() !== 'y') {
108
+ console.log('\n Run `0agent start` to start the daemon.\n');
109
+ return;
110
+ }
111
+ }
112
+
113
+ mkdirSync(resolve(AGENT_DIR, 'logs'), { recursive: true });
114
+ mkdirSync(resolve(AGENT_DIR, 'objects'), { recursive: true });
115
+ mkdirSync(resolve(AGENT_DIR, 'skills', 'builtin'), { recursive: true });
116
+ mkdirSync(resolve(AGENT_DIR, 'skills', 'custom'), { recursive: true });
117
+
118
+ console.log(' Step 1 of 4: LLM Provider\n');
119
+ const provider = await choose(' Which LLM provider?', [
120
+ 'Anthropic (Claude) ← recommended',
121
+ 'OpenAI (GPT-4o)',
122
+ 'Ollama (local, free)',
123
+ ], 0);
124
+ const providerKey = ['anthropic', 'openai', 'ollama'][provider];
125
+
126
+ let apiKey = '';
127
+ if (providerKey !== 'ollama') {
128
+ apiKey = await ask(`\n API Key: `);
129
+ if (!apiKey.trim()) {
130
+ console.log(' ⚠️ No API key provided. You can set it later in ~/.0agent/config.yaml');
131
+ }
132
+ }
133
+
134
+ const model = providerKey === 'anthropic' ? 'claude-sonnet-4-6'
135
+ : providerKey === 'openai' ? 'gpt-4o'
136
+ : 'llama3';
137
+
138
+ console.log('\n Step 2 of 4: Embedding model\n');
139
+ const embedding = await choose(' Embedding backend?', [
140
+ 'Local via Ollama (nomic-embed-text) ← free, private',
141
+ 'OpenAI text-embedding-3-small (cloud)',
142
+ 'Skip (text-only mode)',
143
+ ], 0);
144
+ const embeddingProvider = ['nomic-ollama', 'openai', 'none'][embedding];
145
+
146
+ console.log('\n Step 3 of 4: Sandbox backend\n');
147
+ const sandboxes = detectSandboxes();
148
+ console.log(` Detected: ${sandboxes.join(', ') || 'process (fallback)'}`);
149
+ const sandboxChoice = sandboxes[0] ?? 'process';
150
+ console.log(` Using: ${sandboxChoice}`);
151
+
152
+ console.log('\n Step 4 of 4: Seed graph\n');
153
+ const seed = await choose(' Start with a seed graph?', [
154
+ 'software-engineering (skills + sprint workflow) ← recommended',
155
+ 'scratch (empty graph)',
156
+ ], 0);
157
+ const seedName = seed === 0 ? 'software-engineering' : null;
158
+
159
+ // Write config
160
+ const dbPath = resolve(AGENT_DIR, 'graph.db');
161
+ const hnswPath = resolve(AGENT_DIR, 'hnsw.bin');
162
+ const objPath = resolve(AGENT_DIR, 'objects');
163
+
164
+ const config = `# 0agent configuration
165
+ # Edit this file to change settings.
166
+ version: "1"
167
+
168
+ llm_providers:
169
+ - provider: ${providerKey}
170
+ model: ${model}
171
+ api_key: ${apiKey || '""'}
172
+ is_default: true
173
+
174
+ embedding:
175
+ provider: ${embeddingProvider}
176
+ model: nomic-embed-text
177
+ dimensions: 768
178
+
179
+ sandbox:
180
+ backend: ${sandboxChoice}
181
+
182
+ mcp_servers: []
183
+
184
+ server:
185
+ port: 4200
186
+ host: "127.0.0.1"
187
+
188
+ graph:
189
+ db_path: "${dbPath}"
190
+ hnsw_path: "${hnswPath}"
191
+ object_store_path: "${objPath}"
192
+ ${seedName ? `\nseed: "${seedName}"` : ''}
193
+ `;
194
+
195
+ writeFileSync(CONFIG_PATH, config, 'utf8');
196
+ console.log(`\n ✓ Config written to ${CONFIG_PATH}`);
197
+
198
+ // Copy built-in skills
199
+ const skillsSrc = resolve(dirname(new URL(import.meta.url).pathname), '..', 'skills');
200
+ if (existsSync(skillsSrc)) {
201
+ const { readdirSync, copyFileSync } = await import('node:fs');
202
+ for (const f of readdirSync(skillsSrc).filter(f => f.endsWith('.yaml'))) {
203
+ copyFileSync(resolve(skillsSrc, f), resolve(AGENT_DIR, 'skills', 'builtin', f));
204
+ }
205
+ console.log(' ✓ Built-in skills installed');
206
+ }
207
+
208
+ console.log('\n Starting daemon...\n');
209
+ await startDaemon();
210
+ }
211
+
212
+ function detectSandboxes() {
213
+ const backends = [];
214
+ if (platform() === 'linux') {
215
+ try { existsSync('/dev/kvm') && backends.push('firecracker'); } catch {}
216
+ }
217
+ try { execSync('docker info --format "ok"', { stdio: 'ignore', timeout: 3000 }); backends.push('docker'); } catch {}
218
+ try { execSync('podman info', { stdio: 'ignore', timeout: 3000 }); backends.push('podman'); } catch {}
219
+ try { execSync('bwrap --version', { stdio: 'ignore', timeout: 2000 }); backends.push('bwrap'); } catch {}
220
+ backends.push('process');
221
+ return backends;
222
+ }
223
+
224
+ // ─── Daemon lifecycle ─────────────────────────────────────────────────────
225
+
226
+ async function startDaemon() {
227
+ if (await isDaemonRunning()) {
228
+ console.log(' Daemon already running on port 4200. Run `0agent status`.');
229
+ return;
230
+ }
231
+
232
+ if (!existsSync(CONFIG_PATH)) {
233
+ console.log(' Run `0agent init` first.');
234
+ process.exit(1);
235
+ }
236
+
237
+ // Find the daemon start.js — look relative to this file
238
+ const startScript = resolve(
239
+ dirname(new URL(import.meta.url).pathname),
240
+ '..', 'packages', 'daemon', 'dist', 'start.js'
241
+ );
242
+
243
+ if (!existsSync(startScript)) {
244
+ console.error(` Daemon not built. Run: pnpm build\n Then try again.`);
245
+ process.exit(1);
246
+ }
247
+
248
+ mkdirSync(resolve(AGENT_DIR, 'logs'), { recursive: true });
249
+
250
+ const logFile = writeFileSync(LOG_PATH, '', 'utf8');
251
+ const child = spawn(process.execPath, [startScript], {
252
+ detached: true,
253
+ stdio: ['ignore', 'ignore', 'ignore'],
254
+ env: { ...process.env, ZEROAGENT_CONFIG: CONFIG_PATH },
255
+ });
256
+ child.unref();
257
+
258
+ // Wait for daemon to be ready (poll /api/health)
259
+ process.stdout.write(' Starting');
260
+ for (let i = 0; i < 30; i++) {
261
+ await sleep(500);
262
+ process.stdout.write('.');
263
+ if (await isDaemonRunning()) {
264
+ console.log(' ✓\n');
265
+ console.log(` Daemon running on http://localhost:4200`);
266
+ console.log(` Dashboard: http://localhost:4200`);
267
+ console.log(` Run: 0agent run "your task"\n`);
268
+ return;
269
+ }
270
+ }
271
+ console.log('\n Daemon did not start. Check logs: 0agent logs');
272
+ }
273
+
274
+ function stopDaemon() {
275
+ if (!existsSync(PID_PATH)) {
276
+ console.log(' No daemon PID file found. Is it running?');
277
+ return;
278
+ }
279
+ const pid = parseInt(readFileSync(PID_PATH, 'utf8').trim(), 10);
280
+ try {
281
+ process.kill(pid, 'SIGTERM');
282
+ console.log(` Sent SIGTERM to daemon (pid ${pid}). Shutting down...`);
283
+ } catch (e) {
284
+ console.log(` Could not stop daemon: ${e instanceof Error ? e.message : e}`);
285
+ }
286
+ }
287
+
288
+ async function showStatus() {
289
+ try {
290
+ const res = await fetch(`${BASE_URL}/api/health`);
291
+ const data = await res.json();
292
+ console.log('\n 0agent daemon status');
293
+ console.log(' ─────────────────────────────');
294
+ console.log(` Status: ✓ running`);
295
+ console.log(` Uptime: ${Math.round((data.uptime_ms ?? 0) / 1000)}s`);
296
+ console.log(` Graph: ${data.graph_nodes ?? 0} nodes, ${data.graph_edges ?? 0} edges`);
297
+ console.log(` Sessions: ${data.active_sessions ?? 0} active`);
298
+ console.log(` Sandbox: ${data.sandbox_backend ?? 'unknown'}`);
299
+ console.log(` MCP servers: ${data.mcp_servers_connected ?? 0} connected`);
300
+ console.log(` Port: 4200`);
301
+ console.log(` Dashboard: http://localhost:4200\n`);
302
+ } catch {
303
+ console.log('\n 0agent daemon is not running. Run: 0agent start\n');
304
+ }
305
+ }
306
+
307
+ // ─── Task execution ───────────────────────────────────────────────────────
308
+
309
+ async function runTask(taskArgs) {
310
+ let task = '';
311
+ let skill = null;
312
+ let entityId = null;
313
+
314
+ for (let i = 0; i < taskArgs.length; i++) {
315
+ if (taskArgs[i] === '--skill' && taskArgs[i + 1]) {
316
+ skill = taskArgs[++i];
317
+ } else if (taskArgs[i] === '--entity' && taskArgs[i + 1]) {
318
+ entityId = taskArgs[++i];
319
+ } else {
320
+ task += (task ? ' ' : '') + taskArgs[i];
321
+ }
322
+ }
323
+
324
+ if (!task && !skill) {
325
+ console.log(' Usage: 0agent run "<task>" [--skill <name>] [--entity <id>]');
326
+ return;
327
+ }
328
+
329
+ await requireDaemon();
330
+
331
+ const body = { task: task || `Run skill: ${skill}`, ...(skill && { skill }), ...(entityId && { entity_id: entityId }) };
332
+
333
+ const res = await fetch(`${BASE_URL}/api/sessions`, {
334
+ method: 'POST',
335
+ headers: { 'Content-Type': 'application/json' },
336
+ body: JSON.stringify(body),
337
+ });
338
+ const session = await res.json();
339
+ const sid = session.session_id ?? session.id;
340
+ console.log(`\n Session: ${sid}`);
341
+ console.log(` Task: ${task || skill}`);
342
+ if (entityId) console.log(` Entity: ${entityId}`);
343
+ console.log();
344
+
345
+ // Stream via WebSocket
346
+ await streamSession(sid);
347
+ }
348
+
349
+ async function runSkill(skillName, extraArgs) {
350
+ const argMap = {};
351
+ for (let i = 0; i < extraArgs.length - 1; i += 2) {
352
+ if (extraArgs[i].startsWith('--')) {
353
+ argMap[extraArgs[i].slice(2)] = extraArgs[i + 1];
354
+ }
355
+ }
356
+ // Build task string with args
357
+ const argStr = Object.entries(argMap).map(([k, v]) => `--${k} ${v}`).join(' ');
358
+ await runTask([`/${skillName}${argStr ? ' ' + argStr : ''}`, '--skill', skillName]);
359
+ }
360
+
361
+ async function streamSession(sessionId) {
362
+ await requireDaemon();
363
+
364
+ return new Promise((resolve) => {
365
+ const ws = new (await importWS())(`ws://localhost:4200/ws`);
366
+
367
+ ws.on('open', () => {
368
+ ws.send(JSON.stringify({ type: 'subscribe', topics: ['sessions'] }));
369
+ });
370
+
371
+ ws.on('message', (data) => {
372
+ try {
373
+ const event = JSON.parse(data.toString());
374
+ if (event.session_id !== sessionId) return;
375
+
376
+ switch (event.type) {
377
+ case 'session.step':
378
+ console.log(` → ${event.step}`);
379
+ break;
380
+ case 'session.completed':
381
+ console.log('\n ✓ Completed\n');
382
+ if (event.result?.output) console.log(` ${event.result.output}\n`);
383
+ ws.close();
384
+ resolve();
385
+ break;
386
+ case 'session.failed':
387
+ console.log(`\n ✗ Failed: ${event.error}\n`);
388
+ ws.close();
389
+ resolve();
390
+ break;
391
+ }
392
+ } catch {}
393
+ });
394
+
395
+ ws.on('error', () => {
396
+ // WS not available — fall back to polling
397
+ ws.close();
398
+ pollSession(sessionId).then(resolve);
399
+ });
400
+
401
+ // Timeout
402
+ setTimeout(() => { ws.close(); pollSession(sessionId).then(resolve); }, 300_000);
403
+ });
404
+ }
405
+
406
+ async function pollSession(sessionId) {
407
+ for (let i = 0; i < 300; i++) {
408
+ await sleep(1000);
409
+ const res = await fetch(`${BASE_URL}/api/sessions/${sessionId}`);
410
+ const s = await res.json();
411
+ if (s.status === 'completed') {
412
+ console.log('\n ✓ Completed\n');
413
+ if (s.result?.output) console.log(` ${s.result.output}\n`);
414
+ return;
415
+ }
416
+ if (s.status === 'failed') {
417
+ console.log(`\n ✗ Failed: ${s.error}\n`);
418
+ return;
419
+ }
420
+ process.stdout.write('.');
421
+ }
422
+ }
423
+
424
+ // ─── Chat REPL ───────────────────────────────────────────────────────────
425
+
426
+ async function runChat() {
427
+ await requireDaemon();
428
+ console.log('\n 0agent chat — type your task, /skill for skills, Ctrl+C to exit\n');
429
+ const rl = createInterface({ input: process.stdin, output: process.stdout, prompt: ' > ' });
430
+ rl.prompt();
431
+ rl.on('line', async (line) => {
432
+ const input = line.trim();
433
+ if (!input) { rl.prompt(); return; }
434
+ if (input.startsWith('/')) {
435
+ await runSkill(input.slice(1), []);
436
+ } else {
437
+ await runTask([input]);
438
+ }
439
+ rl.prompt();
440
+ });
441
+ rl.on('close', () => { console.log('\n Goodbye.\n'); process.exit(0); });
442
+ }
443
+
444
+ // ─── Skill commands ──────────────────────────────────────────────────────
445
+
446
+ async function runSkillCommand(skillArgs) {
447
+ const sub = skillArgs[0];
448
+ switch (sub) {
449
+ case 'list': {
450
+ await requireDaemon();
451
+ const res = await fetch(`${BASE_URL}/api/skills`);
452
+ const skills = await res.json();
453
+ console.log('\n Available skills:\n');
454
+ for (const s of (Array.isArray(skills) ? skills : skills.skills ?? [])) {
455
+ console.log(` /${s.name.padEnd(22)} ${s.category.padEnd(10)} ${s.description}`);
456
+ }
457
+ console.log();
458
+ break;
459
+ }
460
+ case 'show': {
461
+ const name = skillArgs[1];
462
+ if (!name) { console.log(' Usage: 0agent skill show <name>'); break; }
463
+ await requireDaemon();
464
+ const res = await fetch(`${BASE_URL}/api/skills/${name}`);
465
+ if (!res.ok) { console.log(` Skill not found: ${name}`); break; }
466
+ const s = await res.json();
467
+ console.log(`\n /${s.name} — ${s.description}`);
468
+ console.log(` Category: ${s.category}`);
469
+ console.log(` Trigger: ${s.trigger}`);
470
+ if (s.workflow?.follows?.length) console.log(` Follows: ${s.workflow.follows.join(', ')}`);
471
+ if (s.workflow?.feeds_into?.length) console.log(` Feeds into: ${s.workflow.feeds_into.join(', ')}`);
472
+ console.log(`\n Role prompt preview:\n ${s.role_prompt?.slice(0, 200)}...\n`);
473
+ break;
474
+ }
475
+ default:
476
+ console.log(' Usage: 0agent skill list | show <name> | create <name> | edit <name>');
477
+ }
478
+ }
479
+
480
+ // ─── Workflow commands ───────────────────────────────────────────────────
481
+
482
+ async function runWorkflowCommand(wfArgs) {
483
+ const sub = wfArgs[0];
484
+ switch (sub) {
485
+ case 'suggest': {
486
+ await requireDaemon();
487
+ const res = await fetch(`${BASE_URL}/api/workflow/suggest`);
488
+ if (!res.ok) { console.log(' No workflow suggestion available.'); break; }
489
+ const data = await res.json();
490
+ if (data.next_skill) {
491
+ console.log(`\n Suggested next skill: /${data.next_skill}`);
492
+ console.log(` Run: 0agent /${data.next_skill}\n`);
493
+ } else {
494
+ console.log(' No next skill suggested (end of workflow or not enough data).');
495
+ }
496
+ break;
497
+ }
498
+ case 'show':
499
+ console.log('\n Open the dashboard to view the workflow graph:');
500
+ console.log(' http://localhost:4200/workflow\n');
501
+ break;
502
+ default:
503
+ console.log(' Usage: 0agent workflow show | suggest');
504
+ }
505
+ }
506
+
507
+ // ─── Improve ────────────────────────────────────────────────────────────
508
+
509
+ async function runImprove(improveArgs) {
510
+ const sub = improveArgs[0] ?? 'run';
511
+ await requireDaemon();
512
+ switch (sub) {
513
+ case 'run':
514
+ case '': {
515
+ const res = await fetch(`${BASE_URL}/api/improve`, { method: 'POST' });
516
+ if (!res.ok) { console.log(' Improvement analysis not yet available (Phase 5 backend).'); break; }
517
+ const plan = await res.json();
518
+ console.log('\n Improvement plan generated:');
519
+ for (const action of plan.priority_actions ?? []) {
520
+ console.log(` ${action.rank}. ${action.description} [${action.auto_approvable ? 'auto' : 'needs approval'}]`);
521
+ }
522
+ break;
523
+ }
524
+ default:
525
+ console.log(' Usage: 0agent improve [show | apply <n> | history]');
526
+ }
527
+ }
528
+
529
+ // ─── Logs ─────────────────────────────────────────────────────────────────
530
+
531
+ function showLogs(logArgs) {
532
+ const n = parseInt(logArgs.find(a => a.match(/^\d+$/)) ?? '100', 10);
533
+ if (!existsSync(LOG_PATH)) { console.log(' No logs yet. Run `0agent start` first.'); return; }
534
+ const { execSync } = await import('node:child_process');
535
+ execSync(`tail -${n} "${LOG_PATH}"`, { stdio: 'inherit' });
536
+ }
537
+
538
+ // ─── Help ─────────────────────────────────────────────────────────────────
539
+
540
+ function showHelp() {
541
+ console.log(`
542
+ 0agent — An agent that learns.
543
+
544
+ Usage:
545
+ 0agent init Interactive setup wizard
546
+ 0agent start Start daemon (background)
547
+ 0agent stop Stop daemon
548
+ 0agent status Health + stats
549
+ 0agent run "<task>" Submit a task
550
+ 0agent /<skill> [args] Run a skill (e.g. /review, /build, /qa)
551
+ 0agent chat Interactive REPL
552
+ 0agent skill list List all skills
553
+ 0agent skill show <name> Show skill details
554
+ 0agent workflow suggest Recommend next skill
555
+ 0agent improve Self-improvement analysis
556
+ 0agent logs Tail daemon logs
557
+
558
+ Dashboard:
559
+ http://localhost:4200 Web UI (after starting daemon)
560
+
561
+ Examples:
562
+ 0agent run "fix the auth bug"
563
+ 0agent /research "Acme Corp funding"
564
+ 0agent /build --task next
565
+ 0agent /qa --url https://staging.myapp.com
566
+ `);
567
+ }
568
+
569
+ // ─── Helpers ─────────────────────────────────────────────────────────────
570
+
571
+ async function isDaemonRunning() {
572
+ try {
573
+ const res = await fetch(`${BASE_URL}/api/health`, { signal: AbortSignal.timeout(2000) });
574
+ return res.ok;
575
+ } catch {
576
+ return false;
577
+ }
578
+ }
579
+
580
+ async function requireDaemon() {
581
+ if (!(await isDaemonRunning())) {
582
+ console.log('\n Daemon is not running. Start it with: 0agent start\n');
583
+ process.exit(1);
584
+ }
585
+ }
586
+
587
+ async function importWS() {
588
+ try {
589
+ const { default: WS } = await import('ws');
590
+ return WS;
591
+ } catch {
592
+ // Fallback to native WebSocket (Node 22+)
593
+ return globalThis.WebSocket;
594
+ }
595
+ }
596
+
597
+ function sleep(ms) {
598
+ return new Promise(r => setTimeout(r, ms));
599
+ }
600
+
601
+ function ask(question) {
602
+ return new Promise(resolve => {
603
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
604
+ rl.question(question, (answer) => { rl.close(); resolve(answer); });
605
+ });
606
+ }
607
+
608
+ async function choose(question, options, defaultIdx = 0) {
609
+ console.log(` ${question}\n`);
610
+ options.forEach((o, i) => console.log(` ${i === defaultIdx ? '●' : '○'} ${o}`));
611
+ const answer = await ask(`\n Choice [${defaultIdx}]: `);
612
+ const n = parseInt(answer.trim(), 10);
613
+ return isNaN(n) ? defaultIdx : Math.max(0, Math.min(options.length - 1, n));
614
+ }
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "0agent",
3
+ "version": "1.0.0",
4
+ "description": "A persistent, learning AI agent that runs on your machine. An agent that learns.",
5
+ "private": false,
6
+ "license": "Apache-2.0",
7
+ "type": "module",
8
+ "bin": {
9
+ "0agent": "./bin/0agent.js"
10
+ },
11
+ "files": [
12
+ "bin/",
13
+ "packages/core/dist/",
14
+ "packages/mcp-hub/dist/",
15
+ "packages/daemon/dist/",
16
+ "packages/subagent/dist/",
17
+ "packages/subagent-runtime/dist/",
18
+ "skills/",
19
+ "seeds/"
20
+ ],
21
+ "scripts": {
22
+ "build": "turbo run build",
23
+ "test": "turbo run test",
24
+ "lint": "turbo run lint",
25
+ "prepublishOnly": "pnpm build --filter='!@0agent/dashboard' --filter='!@0agent/core-native'"
26
+ },
27
+ "dependencies": {
28
+ "@0agent/core": "workspace:*",
29
+ "@0agent/daemon": "workspace:*",
30
+ "@0agent/mcp-hub": "workspace:*",
31
+ "@0agent/subagent": "workspace:*",
32
+ "@0agent/subagent-runtime": "workspace:*",
33
+ "ws": "^8.18.0"
34
+ },
35
+ "devDependencies": {
36
+ "@biomejs/biome": "^1.9.0",
37
+ "@types/node": "^25.5.0",
38
+ "turbo": "^2.1.0",
39
+ "typescript": "^5.5.0"
40
+ },
41
+ "engines": {
42
+ "node": ">=20.0.0"
43
+ },
44
+ "keywords": [
45
+ "ai",
46
+ "agent",
47
+ "llm",
48
+ "knowledge-graph",
49
+ "mcp",
50
+ "autonomous",
51
+ "learning"
52
+ ],
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "https://github.com/0agent-oss/0agent"
56
+ },
57
+ "homepage": "https://github.com/0agent-oss/0agent#readme",
58
+ "packageManager": "pnpm@9.12.0"
59
+ }