@backendkit-labs/agent-core 0.14.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 (533) hide show
  1. package/dist/agent-discovery/AgentPackageLoader.d.ts +14 -0
  2. package/dist/agent-discovery/AgentPackageLoader.d.ts.map +1 -0
  3. package/dist/agent-discovery/AgentPackageLoader.js +78 -0
  4. package/dist/agent-discovery/AgentPackageLoader.js.map +1 -0
  5. package/dist/agent-discovery/RemoteAgentRegistry.d.ts +31 -0
  6. package/dist/agent-discovery/RemoteAgentRegistry.d.ts.map +1 -0
  7. package/dist/agent-discovery/RemoteAgentRegistry.js +103 -0
  8. package/dist/agent-discovery/RemoteAgentRegistry.js.map +1 -0
  9. package/dist/agent-discovery/discoverAgents.d.ts +18 -0
  10. package/dist/agent-discovery/discoverAgents.d.ts.map +1 -0
  11. package/dist/agent-discovery/discoverAgents.js +59 -0
  12. package/dist/agent-discovery/discoverAgents.js.map +1 -0
  13. package/dist/agent-discovery/index.d.ts +5 -0
  14. package/dist/agent-discovery/index.d.ts.map +1 -0
  15. package/dist/agent-discovery/index.js +12 -0
  16. package/dist/agent-discovery/index.js.map +1 -0
  17. package/dist/agent-discovery/types.d.ts +42 -0
  18. package/dist/agent-discovery/types.d.ts.map +1 -0
  19. package/dist/agent-discovery/types.js +3 -0
  20. package/dist/agent-discovery/types.js.map +1 -0
  21. package/dist/agent-memory/EpisodicMemory.d.ts +26 -0
  22. package/dist/agent-memory/EpisodicMemory.d.ts.map +1 -0
  23. package/dist/agent-memory/EpisodicMemory.js +83 -0
  24. package/dist/agent-memory/EpisodicMemory.js.map +1 -0
  25. package/dist/agent-memory/MemorySystem.d.ts +40 -0
  26. package/dist/agent-memory/MemorySystem.d.ts.map +1 -0
  27. package/dist/agent-memory/MemorySystem.js +75 -0
  28. package/dist/agent-memory/MemorySystem.js.map +1 -0
  29. package/dist/agent-memory/ProceduralMemory.d.ts +26 -0
  30. package/dist/agent-memory/ProceduralMemory.d.ts.map +1 -0
  31. package/dist/agent-memory/ProceduralMemory.js +104 -0
  32. package/dist/agent-memory/ProceduralMemory.js.map +1 -0
  33. package/dist/agent-memory/SemanticMemory.d.ts +21 -0
  34. package/dist/agent-memory/SemanticMemory.d.ts.map +1 -0
  35. package/dist/agent-memory/SemanticMemory.js +68 -0
  36. package/dist/agent-memory/SemanticMemory.js.map +1 -0
  37. package/dist/agent-memory/index.d.ts +9 -0
  38. package/dist/agent-memory/index.d.ts.map +1 -0
  39. package/dist/agent-memory/index.js +19 -0
  40. package/dist/agent-memory/index.js.map +1 -0
  41. package/dist/agent-memory/scoring.d.ts +10 -0
  42. package/dist/agent-memory/scoring.d.ts.map +1 -0
  43. package/dist/agent-memory/scoring.js +32 -0
  44. package/dist/agent-memory/scoring.js.map +1 -0
  45. package/dist/agent-memory/stores/InMemoryStore.d.ts +10 -0
  46. package/dist/agent-memory/stores/InMemoryStore.d.ts.map +1 -0
  47. package/dist/agent-memory/stores/InMemoryStore.js +25 -0
  48. package/dist/agent-memory/stores/InMemoryStore.js.map +1 -0
  49. package/dist/agent-memory/stores/JsonFileStore.d.ts +18 -0
  50. package/dist/agent-memory/stores/JsonFileStore.d.ts.map +1 -0
  51. package/dist/agent-memory/stores/JsonFileStore.js +61 -0
  52. package/dist/agent-memory/stores/JsonFileStore.js.map +1 -0
  53. package/dist/agent-memory/tools.d.ts +6 -0
  54. package/dist/agent-memory/tools.d.ts.map +1 -0
  55. package/dist/agent-memory/tools.js +74 -0
  56. package/dist/agent-memory/tools.js.map +1 -0
  57. package/dist/agent-memory/types.d.ts +75 -0
  58. package/dist/agent-memory/types.d.ts.map +1 -0
  59. package/dist/agent-memory/types.js +4 -0
  60. package/dist/agent-memory/types.js.map +1 -0
  61. package/dist/bootstrap/GlobalSeed.d.ts +46 -0
  62. package/dist/bootstrap/GlobalSeed.d.ts.map +1 -0
  63. package/dist/bootstrap/GlobalSeed.js +285 -0
  64. package/dist/bootstrap/GlobalSeed.js.map +1 -0
  65. package/dist/bootstrap/config.d.ts +24 -0
  66. package/dist/bootstrap/config.d.ts.map +1 -0
  67. package/dist/bootstrap/config.js +71 -0
  68. package/dist/bootstrap/config.js.map +1 -0
  69. package/dist/checkpoint/index.d.ts +17 -0
  70. package/dist/checkpoint/index.d.ts.map +1 -0
  71. package/dist/checkpoint/index.js +207 -0
  72. package/dist/checkpoint/index.js.map +1 -0
  73. package/dist/commands/SlashCommandRegistry.d.ts +98 -0
  74. package/dist/commands/SlashCommandRegistry.d.ts.map +1 -0
  75. package/dist/commands/SlashCommandRegistry.js +41 -0
  76. package/dist/commands/SlashCommandRegistry.js.map +1 -0
  77. package/dist/commands/builtin.d.ts +7 -0
  78. package/dist/commands/builtin.d.ts.map +1 -0
  79. package/dist/commands/builtin.js +694 -0
  80. package/dist/commands/builtin.js.map +1 -0
  81. package/dist/commands/index.d.ts +4 -0
  82. package/dist/commands/index.d.ts.map +1 -0
  83. package/dist/commands/index.js +8 -0
  84. package/dist/commands/index.js.map +1 -0
  85. package/dist/context/index.d.ts +8 -0
  86. package/dist/context/index.d.ts.map +1 -0
  87. package/dist/context/index.js +8 -0
  88. package/dist/context/index.js.map +1 -0
  89. package/dist/context/pipeline.d.ts +46 -0
  90. package/dist/context/pipeline.d.ts.map +1 -0
  91. package/dist/context/pipeline.js +111 -0
  92. package/dist/context/pipeline.js.map +1 -0
  93. package/dist/context/stages/stage-instructions.d.ts +12 -0
  94. package/dist/context/stages/stage-instructions.d.ts.map +1 -0
  95. package/dist/context/stages/stage-instructions.js +76 -0
  96. package/dist/context/stages/stage-instructions.js.map +1 -0
  97. package/dist/context/stages/stage-lessons.d.ts +13 -0
  98. package/dist/context/stages/stage-lessons.d.ts.map +1 -0
  99. package/dist/context/stages/stage-lessons.js +83 -0
  100. package/dist/context/stages/stage-lessons.js.map +1 -0
  101. package/dist/context/stages/stage-manifest.d.ts +11 -0
  102. package/dist/context/stages/stage-manifest.d.ts.map +1 -0
  103. package/dist/context/stages/stage-manifest.js +62 -0
  104. package/dist/context/stages/stage-manifest.js.map +1 -0
  105. package/dist/context/stages/stage-project.d.ts +10 -0
  106. package/dist/context/stages/stage-project.d.ts.map +1 -0
  107. package/dist/context/stages/stage-project.js +55 -0
  108. package/dist/context/stages/stage-project.js.map +1 -0
  109. package/dist/context/stages/stage-session.d.ts +12 -0
  110. package/dist/context/stages/stage-session.d.ts.map +1 -0
  111. package/dist/context/stages/stage-session.js +69 -0
  112. package/dist/context/stages/stage-session.js.map +1 -0
  113. package/dist/delegation/DelegationBus.d.ts +40 -0
  114. package/dist/delegation/DelegationBus.d.ts.map +1 -0
  115. package/dist/delegation/DelegationBus.js +68 -0
  116. package/dist/delegation/DelegationBus.js.map +1 -0
  117. package/dist/engine/AgentEngine.d.ts +212 -0
  118. package/dist/engine/AgentEngine.d.ts.map +1 -0
  119. package/dist/engine/AgentEngine.js +1037 -0
  120. package/dist/engine/AgentEngine.js.map +1 -0
  121. package/dist/engine/AgentRegistry.d.ts +13 -0
  122. package/dist/engine/AgentRegistry.d.ts.map +1 -0
  123. package/dist/engine/AgentRegistry.js +37 -0
  124. package/dist/engine/AgentRegistry.js.map +1 -0
  125. package/dist/engine/IterationManager.d.ts +79 -0
  126. package/dist/engine/IterationManager.d.ts.map +1 -0
  127. package/dist/engine/IterationManager.js +103 -0
  128. package/dist/engine/IterationManager.js.map +1 -0
  129. package/dist/engine/ProviderRegistry.d.ts +10 -0
  130. package/dist/engine/ProviderRegistry.d.ts.map +1 -0
  131. package/dist/engine/ProviderRegistry.js +28 -0
  132. package/dist/engine/ProviderRegistry.js.map +1 -0
  133. package/dist/engine/ToolRegistry.d.ts +54 -0
  134. package/dist/engine/ToolRegistry.d.ts.map +1 -0
  135. package/dist/engine/ToolRegistry.js +75 -0
  136. package/dist/engine/ToolRegistry.js.map +1 -0
  137. package/dist/engine/createBaseEngine.d.ts +169 -0
  138. package/dist/engine/createBaseEngine.d.ts.map +1 -0
  139. package/dist/engine/createBaseEngine.js +91 -0
  140. package/dist/engine/createBaseEngine.js.map +1 -0
  141. package/dist/engine/qa-orchestrator.d.ts +56 -0
  142. package/dist/engine/qa-orchestrator.d.ts.map +1 -0
  143. package/dist/engine/qa-orchestrator.js +163 -0
  144. package/dist/engine/qa-orchestrator.js.map +1 -0
  145. package/dist/index.d.ts +83 -0
  146. package/dist/index.d.ts.map +1 -0
  147. package/dist/index.js +163 -0
  148. package/dist/index.js.map +1 -0
  149. package/dist/mcp/MCPClientManager.d.ts +65 -0
  150. package/dist/mcp/MCPClientManager.d.ts.map +1 -0
  151. package/dist/mcp/MCPClientManager.js +211 -0
  152. package/dist/mcp/MCPClientManager.js.map +1 -0
  153. package/dist/mcp/index.d.ts +3 -0
  154. package/dist/mcp/index.d.ts.map +1 -0
  155. package/dist/mcp/index.js +6 -0
  156. package/dist/mcp/index.js.map +1 -0
  157. package/dist/mcp/types.d.ts +121 -0
  158. package/dist/mcp/types.d.ts.map +1 -0
  159. package/dist/mcp/types.js +3 -0
  160. package/dist/mcp/types.js.map +1 -0
  161. package/dist/memory/SessionMemory.d.ts +9 -0
  162. package/dist/memory/SessionMemory.d.ts.map +1 -0
  163. package/dist/memory/SessionMemory.js +20 -0
  164. package/dist/memory/SessionMemory.js.map +1 -0
  165. package/dist/observability/CostTracker.d.ts +19 -0
  166. package/dist/observability/CostTracker.d.ts.map +1 -0
  167. package/dist/observability/CostTracker.js +64 -0
  168. package/dist/observability/CostTracker.js.map +1 -0
  169. package/dist/observability/MetricsCollector.d.ts +17 -0
  170. package/dist/observability/MetricsCollector.d.ts.map +1 -0
  171. package/dist/observability/MetricsCollector.js +70 -0
  172. package/dist/observability/MetricsCollector.js.map +1 -0
  173. package/dist/observability/ObservabilityManager.d.ts +33 -0
  174. package/dist/observability/ObservabilityManager.d.ts.map +1 -0
  175. package/dist/observability/ObservabilityManager.js +107 -0
  176. package/dist/observability/ObservabilityManager.js.map +1 -0
  177. package/dist/observability/Tracer.d.ts +23 -0
  178. package/dist/observability/Tracer.d.ts.map +1 -0
  179. package/dist/observability/Tracer.js +65 -0
  180. package/dist/observability/Tracer.js.map +1 -0
  181. package/dist/observability/index.d.ts +7 -0
  182. package/dist/observability/index.d.ts.map +1 -0
  183. package/dist/observability/index.js +14 -0
  184. package/dist/observability/index.js.map +1 -0
  185. package/dist/observability/types.d.ts +77 -0
  186. package/dist/observability/types.d.ts.map +1 -0
  187. package/dist/observability/types.js +15 -0
  188. package/dist/observability/types.js.map +1 -0
  189. package/dist/orchestration/audit/audit-ci-blocker.d.ts +31 -0
  190. package/dist/orchestration/audit/audit-ci-blocker.d.ts.map +1 -0
  191. package/dist/orchestration/audit/audit-ci-blocker.js +120 -0
  192. package/dist/orchestration/audit/audit-ci-blocker.js.map +1 -0
  193. package/dist/orchestration/audit/audit-finding-tracer.d.ts +33 -0
  194. package/dist/orchestration/audit/audit-finding-tracer.d.ts.map +1 -0
  195. package/dist/orchestration/audit/audit-finding-tracer.js +126 -0
  196. package/dist/orchestration/audit/audit-finding-tracer.js.map +1 -0
  197. package/dist/orchestration/audit/audit-lessons-learned.d.ts +27 -0
  198. package/dist/orchestration/audit/audit-lessons-learned.d.ts.map +1 -0
  199. package/dist/orchestration/audit/audit-lessons-learned.js +155 -0
  200. package/dist/orchestration/audit/audit-lessons-learned.js.map +1 -0
  201. package/dist/orchestration/audit/audit-pending-issues.d.ts +21 -0
  202. package/dist/orchestration/audit/audit-pending-issues.d.ts.map +1 -0
  203. package/dist/orchestration/audit/audit-pending-issues.js +110 -0
  204. package/dist/orchestration/audit/audit-pending-issues.js.map +1 -0
  205. package/dist/orchestration/audit/audit-reflection-bridge.d.ts +39 -0
  206. package/dist/orchestration/audit/audit-reflection-bridge.d.ts.map +1 -0
  207. package/dist/orchestration/audit/audit-reflection-bridge.js +65 -0
  208. package/dist/orchestration/audit/audit-reflection-bridge.js.map +1 -0
  209. package/dist/orchestration/audit/audit-report-renderer.d.ts +30 -0
  210. package/dist/orchestration/audit/audit-report-renderer.d.ts.map +1 -0
  211. package/dist/orchestration/audit/audit-report-renderer.js +249 -0
  212. package/dist/orchestration/audit/audit-report-renderer.js.map +1 -0
  213. package/dist/orchestration/audit/audit-report-version-manager.d.ts +52 -0
  214. package/dist/orchestration/audit/audit-report-version-manager.d.ts.map +1 -0
  215. package/dist/orchestration/audit/audit-report-version-manager.js +144 -0
  216. package/dist/orchestration/audit/audit-report-version-manager.js.map +1 -0
  217. package/dist/orchestration/audit/audit-silent-gates-buffer.d.ts +37 -0
  218. package/dist/orchestration/audit/audit-silent-gates-buffer.d.ts.map +1 -0
  219. package/dist/orchestration/audit/audit-silent-gates-buffer.js +129 -0
  220. package/dist/orchestration/audit/audit-silent-gates-buffer.js.map +1 -0
  221. package/dist/orchestration/audit/index.d.ts +17 -0
  222. package/dist/orchestration/audit/index.d.ts.map +1 -0
  223. package/dist/orchestration/audit/index.js +26 -0
  224. package/dist/orchestration/audit/index.js.map +1 -0
  225. package/dist/orchestration/audit/types.d.ts +79 -0
  226. package/dist/orchestration/audit/types.d.ts.map +1 -0
  227. package/dist/orchestration/audit/types.js +10 -0
  228. package/dist/orchestration/audit/types.js.map +1 -0
  229. package/dist/orchestration/audit-reporter.d.ts +133 -0
  230. package/dist/orchestration/audit-reporter.d.ts.map +1 -0
  231. package/dist/orchestration/audit-reporter.js +322 -0
  232. package/dist/orchestration/audit-reporter.js.map +1 -0
  233. package/dist/orchestration/config-loader.d.ts +51 -0
  234. package/dist/orchestration/config-loader.d.ts.map +1 -0
  235. package/dist/orchestration/config-loader.js +215 -0
  236. package/dist/orchestration/config-loader.js.map +1 -0
  237. package/dist/orchestration/domain-detector.d.ts +36 -0
  238. package/dist/orchestration/domain-detector.d.ts.map +1 -0
  239. package/dist/orchestration/domain-detector.js +157 -0
  240. package/dist/orchestration/domain-detector.js.map +1 -0
  241. package/dist/orchestration/fsm.d.ts +86 -0
  242. package/dist/orchestration/fsm.d.ts.map +1 -0
  243. package/dist/orchestration/fsm.js +223 -0
  244. package/dist/orchestration/fsm.js.map +1 -0
  245. package/dist/orchestration/gate-resolver.d.ts +42 -0
  246. package/dist/orchestration/gate-resolver.d.ts.map +1 -0
  247. package/dist/orchestration/gate-resolver.js +94 -0
  248. package/dist/orchestration/gate-resolver.js.map +1 -0
  249. package/dist/orchestration/index.d.ts +15 -0
  250. package/dist/orchestration/index.d.ts.map +1 -0
  251. package/dist/orchestration/index.js +32 -0
  252. package/dist/orchestration/index.js.map +1 -0
  253. package/dist/orchestration/intent-detector.d.ts +43 -0
  254. package/dist/orchestration/intent-detector.d.ts.map +1 -0
  255. package/dist/orchestration/intent-detector.js +249 -0
  256. package/dist/orchestration/intent-detector.js.map +1 -0
  257. package/dist/orchestration/keyword-match.d.ts +17 -0
  258. package/dist/orchestration/keyword-match.d.ts.map +1 -0
  259. package/dist/orchestration/keyword-match.js +26 -0
  260. package/dist/orchestration/keyword-match.js.map +1 -0
  261. package/dist/orchestration/llm-client-adapter.d.ts +11 -0
  262. package/dist/orchestration/llm-client-adapter.d.ts.map +1 -0
  263. package/dist/orchestration/llm-client-adapter.js +30 -0
  264. package/dist/orchestration/llm-client-adapter.js.map +1 -0
  265. package/dist/orchestration/orchestrator.d.ts +153 -0
  266. package/dist/orchestration/orchestrator.d.ts.map +1 -0
  267. package/dist/orchestration/orchestrator.js +471 -0
  268. package/dist/orchestration/orchestrator.js.map +1 -0
  269. package/dist/orchestration/policy-engine.d.ts +47 -0
  270. package/dist/orchestration/policy-engine.d.ts.map +1 -0
  271. package/dist/orchestration/policy-engine.js +262 -0
  272. package/dist/orchestration/policy-engine.js.map +1 -0
  273. package/dist/orchestration/risk-scorer.d.ts +38 -0
  274. package/dist/orchestration/risk-scorer.d.ts.map +1 -0
  275. package/dist/orchestration/risk-scorer.js +145 -0
  276. package/dist/orchestration/risk-scorer.js.map +1 -0
  277. package/dist/orchestration/task-context.d.ts +195 -0
  278. package/dist/orchestration/task-context.d.ts.map +1 -0
  279. package/dist/orchestration/task-context.js +160 -0
  280. package/dist/orchestration/task-context.js.map +1 -0
  281. package/dist/orchestration/types.d.ts +111 -0
  282. package/dist/orchestration/types.d.ts.map +1 -0
  283. package/dist/orchestration/types.js +37 -0
  284. package/dist/orchestration/types.js.map +1 -0
  285. package/dist/qa/index.d.ts +3 -0
  286. package/dist/qa/index.d.ts.map +1 -0
  287. package/dist/qa/index.js +6 -0
  288. package/dist/qa/index.js.map +1 -0
  289. package/dist/qa/qa-service.d.ts +30 -0
  290. package/dist/qa/qa-service.d.ts.map +1 -0
  291. package/dist/qa/qa-service.js +200 -0
  292. package/dist/qa/qa-service.js.map +1 -0
  293. package/dist/reflection/commands/domain-commands.d.ts +78 -0
  294. package/dist/reflection/commands/domain-commands.d.ts.map +1 -0
  295. package/dist/reflection/commands/domain-commands.js +203 -0
  296. package/dist/reflection/commands/domain-commands.js.map +1 -0
  297. package/dist/reflection/domain-registry.d.ts +104 -0
  298. package/dist/reflection/domain-registry.d.ts.map +1 -0
  299. package/dist/reflection/domain-registry.js +279 -0
  300. package/dist/reflection/domain-registry.js.map +1 -0
  301. package/dist/reflection/domains/agent-domain.d.ts +40 -0
  302. package/dist/reflection/domains/agent-domain.d.ts.map +1 -0
  303. package/dist/reflection/domains/agent-domain.js +161 -0
  304. package/dist/reflection/domains/agent-domain.js.map +1 -0
  305. package/dist/reflection/domains/audit-domain.d.ts +46 -0
  306. package/dist/reflection/domains/audit-domain.d.ts.map +1 -0
  307. package/dist/reflection/domains/audit-domain.js +241 -0
  308. package/dist/reflection/domains/audit-domain.js.map +1 -0
  309. package/dist/reflection/domains/bootstrap-domain.d.ts +40 -0
  310. package/dist/reflection/domains/bootstrap-domain.d.ts.map +1 -0
  311. package/dist/reflection/domains/bootstrap-domain.js +156 -0
  312. package/dist/reflection/domains/bootstrap-domain.js.map +1 -0
  313. package/dist/reflection/domains/commit-domain.d.ts +40 -0
  314. package/dist/reflection/domains/commit-domain.d.ts.map +1 -0
  315. package/dist/reflection/domains/commit-domain.js +174 -0
  316. package/dist/reflection/domains/commit-domain.js.map +1 -0
  317. package/dist/reflection/domains/test-domain.d.ts +40 -0
  318. package/dist/reflection/domains/test-domain.d.ts.map +1 -0
  319. package/dist/reflection/domains/test-domain.js +194 -0
  320. package/dist/reflection/domains/test-domain.js.map +1 -0
  321. package/dist/reflection/failure-catalog.d.ts +100 -0
  322. package/dist/reflection/failure-catalog.d.ts.map +1 -0
  323. package/dist/reflection/failure-catalog.js +269 -0
  324. package/dist/reflection/failure-catalog.js.map +1 -0
  325. package/dist/reflection/historical-loader.d.ts +105 -0
  326. package/dist/reflection/historical-loader.d.ts.map +1 -0
  327. package/dist/reflection/historical-loader.js +462 -0
  328. package/dist/reflection/historical-loader.js.map +1 -0
  329. package/dist/reflection/hooks/agent-hook.d.ts +72 -0
  330. package/dist/reflection/hooks/agent-hook.d.ts.map +1 -0
  331. package/dist/reflection/hooks/agent-hook.js +98 -0
  332. package/dist/reflection/hooks/agent-hook.js.map +1 -0
  333. package/dist/reflection/hooks/audit-hook.d.ts +72 -0
  334. package/dist/reflection/hooks/audit-hook.d.ts.map +1 -0
  335. package/dist/reflection/hooks/audit-hook.js +112 -0
  336. package/dist/reflection/hooks/audit-hook.js.map +1 -0
  337. package/dist/reflection/hooks/bootstrap-hook.d.ts +71 -0
  338. package/dist/reflection/hooks/bootstrap-hook.d.ts.map +1 -0
  339. package/dist/reflection/hooks/bootstrap-hook.js +97 -0
  340. package/dist/reflection/hooks/bootstrap-hook.js.map +1 -0
  341. package/dist/reflection/hooks/commit-hook.d.ts +63 -0
  342. package/dist/reflection/hooks/commit-hook.d.ts.map +1 -0
  343. package/dist/reflection/hooks/commit-hook.js +90 -0
  344. package/dist/reflection/hooks/commit-hook.js.map +1 -0
  345. package/dist/reflection/hooks/test-hook.d.ts +65 -0
  346. package/dist/reflection/hooks/test-hook.d.ts.map +1 -0
  347. package/dist/reflection/hooks/test-hook.js +99 -0
  348. package/dist/reflection/hooks/test-hook.js.map +1 -0
  349. package/dist/reflection/index.d.ts +19 -0
  350. package/dist/reflection/index.d.ts.map +1 -0
  351. package/dist/reflection/index.js +40 -0
  352. package/dist/reflection/index.js.map +1 -0
  353. package/dist/reflection/lessons-memo-generator.d.ts +60 -0
  354. package/dist/reflection/lessons-memo-generator.d.ts.map +1 -0
  355. package/dist/reflection/lessons-memo-generator.js +286 -0
  356. package/dist/reflection/lessons-memo-generator.js.map +1 -0
  357. package/dist/reflection/pattern-detector.d.ts +55 -0
  358. package/dist/reflection/pattern-detector.d.ts.map +1 -0
  359. package/dist/reflection/pattern-detector.js +137 -0
  360. package/dist/reflection/pattern-detector.js.map +1 -0
  361. package/dist/reflection/policy-promoter.d.ts +86 -0
  362. package/dist/reflection/policy-promoter.d.ts.map +1 -0
  363. package/dist/reflection/policy-promoter.js +382 -0
  364. package/dist/reflection/policy-promoter.js.map +1 -0
  365. package/dist/reflection/reflection-engine.d.ts +160 -0
  366. package/dist/reflection/reflection-engine.d.ts.map +1 -0
  367. package/dist/reflection/reflection-engine.js +352 -0
  368. package/dist/reflection/reflection-engine.js.map +1 -0
  369. package/dist/reflection/types.d.ts +106 -0
  370. package/dist/reflection/types.d.ts.map +1 -0
  371. package/dist/reflection/types.js +64 -0
  372. package/dist/reflection/types.js.map +1 -0
  373. package/dist/shared/llm/resilient-client.d.ts +40 -0
  374. package/dist/shared/llm/resilient-client.d.ts.map +1 -0
  375. package/dist/shared/llm/resilient-client.js +60 -0
  376. package/dist/shared/llm/resilient-client.js.map +1 -0
  377. package/dist/shared/utils/atomic-write.d.ts +7 -0
  378. package/dist/shared/utils/atomic-write.d.ts.map +1 -0
  379. package/dist/shared/utils/atomic-write.js +52 -0
  380. package/dist/shared/utils/atomic-write.js.map +1 -0
  381. package/dist/shared/utils/git.d.ts +2 -0
  382. package/dist/shared/utils/git.d.ts.map +1 -0
  383. package/dist/shared/utils/git.js +17 -0
  384. package/dist/shared/utils/git.js.map +1 -0
  385. package/dist/shared/utils/project-key.d.ts +4 -0
  386. package/dist/shared/utils/project-key.d.ts.map +1 -0
  387. package/dist/shared/utils/project-key.js +54 -0
  388. package/dist/shared/utils/project-key.js.map +1 -0
  389. package/dist/shared/utils/string-utils.d.ts +17 -0
  390. package/dist/shared/utils/string-utils.d.ts.map +1 -0
  391. package/dist/shared/utils/string-utils.js +37 -0
  392. package/dist/shared/utils/string-utils.js.map +1 -0
  393. package/dist/skills/activator.d.ts +27 -0
  394. package/dist/skills/activator.d.ts.map +1 -0
  395. package/dist/skills/activator.js +127 -0
  396. package/dist/skills/activator.js.map +1 -0
  397. package/dist/skills/builtins/global.d.ts +7 -0
  398. package/dist/skills/builtins/global.d.ts.map +1 -0
  399. package/dist/skills/builtins/global.js +208 -0
  400. package/dist/skills/builtins/global.js.map +1 -0
  401. package/dist/skills/builtins/go-pack.d.ts +7 -0
  402. package/dist/skills/builtins/go-pack.d.ts.map +1 -0
  403. package/dist/skills/builtins/go-pack.js +263 -0
  404. package/dist/skills/builtins/go-pack.js.map +1 -0
  405. package/dist/skills/builtins/java-pack.d.ts +7 -0
  406. package/dist/skills/builtins/java-pack.d.ts.map +1 -0
  407. package/dist/skills/builtins/java-pack.js +272 -0
  408. package/dist/skills/builtins/java-pack.js.map +1 -0
  409. package/dist/skills/builtins/kotlin-pack.d.ts +9 -0
  410. package/dist/skills/builtins/kotlin-pack.d.ts.map +1 -0
  411. package/dist/skills/builtins/kotlin-pack.js +292 -0
  412. package/dist/skills/builtins/kotlin-pack.js.map +1 -0
  413. package/dist/skills/builtins/node-pack.d.ts +7 -0
  414. package/dist/skills/builtins/node-pack.d.ts.map +1 -0
  415. package/dist/skills/builtins/node-pack.js +750 -0
  416. package/dist/skills/builtins/node-pack.js.map +1 -0
  417. package/dist/skills/builtins/python-pack.d.ts +7 -0
  418. package/dist/skills/builtins/python-pack.d.ts.map +1 -0
  419. package/dist/skills/builtins/python-pack.js +303 -0
  420. package/dist/skills/builtins/python-pack.js.map +1 -0
  421. package/dist/skills/index.d.ts +11 -0
  422. package/dist/skills/index.d.ts.map +1 -0
  423. package/dist/skills/index.js +24 -0
  424. package/dist/skills/index.js.map +1 -0
  425. package/dist/skills/loader.d.ts +39 -0
  426. package/dist/skills/loader.d.ts.map +1 -0
  427. package/dist/skills/loader.js +152 -0
  428. package/dist/skills/loader.js.map +1 -0
  429. package/dist/skills/manager.d.ts +97 -0
  430. package/dist/skills/manager.d.ts.map +1 -0
  431. package/dist/skills/manager.js +296 -0
  432. package/dist/skills/manager.js.map +1 -0
  433. package/dist/skills/parse-md-skill.d.ts +14 -0
  434. package/dist/skills/parse-md-skill.d.ts.map +1 -0
  435. package/dist/skills/parse-md-skill.js +86 -0
  436. package/dist/skills/parse-md-skill.js.map +1 -0
  437. package/dist/skills/providers/github.d.ts +21 -0
  438. package/dist/skills/providers/github.d.ts.map +1 -0
  439. package/dist/skills/providers/github.js +146 -0
  440. package/dist/skills/providers/github.js.map +1 -0
  441. package/dist/skills/providers/index.d.ts +6 -0
  442. package/dist/skills/providers/index.d.ts.map +1 -0
  443. package/dist/skills/providers/index.js +12 -0
  444. package/dist/skills/providers/index.js.map +1 -0
  445. package/dist/skills/providers/local.d.ts +16 -0
  446. package/dist/skills/providers/local.d.ts.map +1 -0
  447. package/dist/skills/providers/local.js +91 -0
  448. package/dist/skills/providers/local.js.map +1 -0
  449. package/dist/skills/providers/obsidian.d.ts +31 -0
  450. package/dist/skills/providers/obsidian.d.ts.map +1 -0
  451. package/dist/skills/providers/obsidian.js +141 -0
  452. package/dist/skills/providers/obsidian.js.map +1 -0
  453. package/dist/skills/providers/skills-sh.d.ts +32 -0
  454. package/dist/skills/providers/skills-sh.d.ts.map +1 -0
  455. package/dist/skills/providers/skills-sh.js +53 -0
  456. package/dist/skills/providers/skills-sh.js.map +1 -0
  457. package/dist/skills/providers/types.d.ts +25 -0
  458. package/dist/skills/providers/types.d.ts.map +1 -0
  459. package/dist/skills/providers/types.js +3 -0
  460. package/dist/skills/providers/types.js.map +1 -0
  461. package/dist/skills/registry.d.ts +18 -0
  462. package/dist/skills/registry.d.ts.map +1 -0
  463. package/dist/skills/registry.js +45 -0
  464. package/dist/skills/registry.js.map +1 -0
  465. package/dist/skills/types.d.ts +66 -0
  466. package/dist/skills/types.d.ts.map +1 -0
  467. package/dist/skills/types.js +3 -0
  468. package/dist/skills/types.js.map +1 -0
  469. package/dist/tools/defineTool.d.ts +34 -0
  470. package/dist/tools/defineTool.d.ts.map +1 -0
  471. package/dist/tools/defineTool.js +63 -0
  472. package/dist/tools/defineTool.js.map +1 -0
  473. package/dist/transport/CallbackTransport.d.ts +12 -0
  474. package/dist/transport/CallbackTransport.d.ts.map +1 -0
  475. package/dist/transport/CallbackTransport.js +28 -0
  476. package/dist/transport/CallbackTransport.js.map +1 -0
  477. package/dist/transport/StdoutTransport.d.ts +9 -0
  478. package/dist/transport/StdoutTransport.d.ts.map +1 -0
  479. package/dist/transport/StdoutTransport.js +63 -0
  480. package/dist/transport/StdoutTransport.js.map +1 -0
  481. package/dist/transport/Transport.d.ts +8 -0
  482. package/dist/transport/Transport.d.ts.map +1 -0
  483. package/dist/transport/Transport.js +3 -0
  484. package/dist/transport/Transport.js.map +1 -0
  485. package/dist/triggers/EventBus.d.ts +14 -0
  486. package/dist/triggers/EventBus.d.ts.map +1 -0
  487. package/dist/triggers/EventBus.js +18 -0
  488. package/dist/triggers/EventBus.js.map +1 -0
  489. package/dist/triggers/TriggerManager.d.ts +28 -0
  490. package/dist/triggers/TriggerManager.d.ts.map +1 -0
  491. package/dist/triggers/TriggerManager.js +158 -0
  492. package/dist/triggers/TriggerManager.js.map +1 -0
  493. package/dist/triggers/WebhookServer.d.ts +23 -0
  494. package/dist/triggers/WebhookServer.d.ts.map +1 -0
  495. package/dist/triggers/WebhookServer.js +127 -0
  496. package/dist/triggers/WebhookServer.js.map +1 -0
  497. package/dist/triggers/createAutonomousAgent.d.ts +49 -0
  498. package/dist/triggers/createAutonomousAgent.d.ts.map +1 -0
  499. package/dist/triggers/createAutonomousAgent.js +42 -0
  500. package/dist/triggers/createAutonomousAgent.js.map +1 -0
  501. package/dist/triggers/index.d.ts +8 -0
  502. package/dist/triggers/index.d.ts.map +1 -0
  503. package/dist/triggers/index.js +12 -0
  504. package/dist/triggers/index.js.map +1 -0
  505. package/dist/triggers/types.d.ts +35 -0
  506. package/dist/triggers/types.d.ts.map +1 -0
  507. package/dist/triggers/types.js +3 -0
  508. package/dist/triggers/types.js.map +1 -0
  509. package/dist/types/index.d.ts +256 -0
  510. package/dist/types/index.d.ts.map +1 -0
  511. package/dist/types/index.js +4 -0
  512. package/dist/types/index.js.map +1 -0
  513. package/dist/workflow/WorkflowBuilder.d.ts +22 -0
  514. package/dist/workflow/WorkflowBuilder.d.ts.map +1 -0
  515. package/dist/workflow/WorkflowBuilder.js +67 -0
  516. package/dist/workflow/WorkflowBuilder.js.map +1 -0
  517. package/dist/workflow/WorkflowRunner.d.ts +22 -0
  518. package/dist/workflow/WorkflowRunner.d.ts.map +1 -0
  519. package/dist/workflow/WorkflowRunner.js +97 -0
  520. package/dist/workflow/WorkflowRunner.js.map +1 -0
  521. package/dist/workflow/index.d.ts +5 -0
  522. package/dist/workflow/index.d.ts.map +1 -0
  523. package/dist/workflow/index.js +10 -0
  524. package/dist/workflow/index.js.map +1 -0
  525. package/dist/workflow/types.d.ts +35 -0
  526. package/dist/workflow/types.d.ts.map +1 -0
  527. package/dist/workflow/types.js +3 -0
  528. package/dist/workflow/types.js.map +1 -0
  529. package/dist/workspace/index.d.ts +55 -0
  530. package/dist/workspace/index.d.ts.map +1 -0
  531. package/dist/workspace/index.js +189 -0
  532. package/dist/workspace/index.js.map +1 -0
  533. package/package.json +87 -0
@@ -0,0 +1,694 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.registerBuiltinCommands = registerBuiltinCommands;
37
+ const fs = __importStar(require("fs/promises"));
38
+ const path = __importStar(require("path"));
39
+ const result_1 = require("@backendkit-labs/result");
40
+ const manager_1 = require("../skills/manager");
41
+ const parse_md_skill_1 = require("../skills/parse-md-skill");
42
+ const project_key_1 = require("../shared/utils/project-key");
43
+ const atomic_write_1 = require("../shared/utils/atomic-write");
44
+ const checkpoint_1 = require("../checkpoint");
45
+ const workspace_1 = require("../workspace");
46
+ // ── Internal helper ───────────────────────────────────────────────────────────
47
+ async function doSwitch(wsName, projectName, config, appName, emit, injectContext, onCwdChange) {
48
+ const ws = config[wsName];
49
+ if (!ws) {
50
+ emit(`Workspace "${wsName}" not found.`);
51
+ return;
52
+ }
53
+ const target = ws.projects.find(p => p.name === projectName);
54
+ if (!target) {
55
+ emit(`Project "${projectName}" not found in workspace "${wsName}".`);
56
+ return;
57
+ }
58
+ // Persist the new active state
59
+ const updated = (0, workspace_1.setActiveProject)(config, wsName, target.name);
60
+ await (0, workspace_1.saveWorkspaces)(appName, updated);
61
+ // Inject workspace context into agent memory
62
+ const context = await (0, workspace_1.buildWorkspaceContext)(wsName, updated[wsName], appName);
63
+ injectContext?.(context);
64
+ if (onCwdChange) {
65
+ onCwdChange(target.cwd);
66
+ emit(`Switched to workspace "${wsName}" — project: ${target.name}`);
67
+ }
68
+ else {
69
+ emit(`Workspace "${wsName}" loaded — project: ${target.name} (${target.cwd})`);
70
+ }
71
+ }
72
+ // ── Registry ──────────────────────────────────────────────────────────────────
73
+ /**
74
+ * Registers the framework's built-in slash commands into the given registry.
75
+ * Call this once when bootstrapping the app — before registering app-specific commands.
76
+ */
77
+ function registerBuiltinCommands(registry) {
78
+ registry.register('/help', 'List available commands', async (ctx) => {
79
+ const cmds = registry.getAll();
80
+ const list = cmds.map(c => `- ${c.name.padEnd(22)} ${c.description}`).join('\n');
81
+ ctx.emit(`Available commands:\n${list}`);
82
+ });
83
+ registry.register('/agents', 'List agents or switch active agent', async (ctx) => {
84
+ if (!ctx.agents?.length) {
85
+ ctx.emit('No agents loaded.');
86
+ return;
87
+ }
88
+ const active = ctx.effectiveAgentId;
89
+ if (ctx.prompt) {
90
+ const options = ctx.agents.map(a => {
91
+ const icon = a.icon ? `${a.icon} ` : '';
92
+ const badge = a.id === active ? ' [activo]' : '';
93
+ const label = `${icon}${a.name}${badge}`;
94
+ const desc = a.description ? ` — ${a.description}` : '';
95
+ return { label: `${label.padEnd(28)}${desc}`, value: a.id };
96
+ });
97
+ const selected = await ctx.prompt('Seleccionar agente:', options);
98
+ if (!selected)
99
+ return;
100
+ if (selected === active) {
101
+ ctx.emit(`Ya estás usando ${selected}.`);
102
+ return;
103
+ }
104
+ // Switch via engine so the bridge/engine updates the active agent
105
+ await ctx.runEngine?.(`/agent ${selected}`);
106
+ ctx.emit(`Agente cambiado → ${selected}`);
107
+ }
108
+ else {
109
+ const lines = ctx.agents.map(a => {
110
+ const icon = a.icon ? `${a.icon} ` : '';
111
+ const marker = a.id === active ? ' ◀ activo' : '';
112
+ return ` ${icon}${a.id.padEnd(20)} ${a.name}${marker}`;
113
+ });
114
+ ctx.emit('Agentes disponibles:\n' + lines.join('\n') +
115
+ '\n\nUsa /agents para el picker interactivo o /agent <id> para cambiar directamente.');
116
+ }
117
+ });
118
+ registry.register('/skills', 'Gestionar skills: list, install, create, generate, update, uninstall, reload', async (ctx) => {
119
+ const parts = ctx.args.trim().split(/\s+/);
120
+ const sub = parts[0];
121
+ // ── /skills install <url> [--global] ─────────────────────────────────
122
+ if (sub === 'install') {
123
+ const source = parts[1];
124
+ if (!source) {
125
+ ctx.emit('Uso: /skills install <url> [--global]\n' +
126
+ ' /skills install https://skills.sh/owner/repo\n' +
127
+ ' /skills install https://github.com/owner/repo\n' +
128
+ ' /skills install https://skills.sh/owner/repo --global\n\n' +
129
+ 'Sin --global, el pack se instala solo para este proyecto.');
130
+ return;
131
+ }
132
+ const isGlobal = parts.includes('--global');
133
+ const appName = ctx.appName ?? 'bk-agent';
134
+ const manager = (0, manager_1.createSkillManager)(appName);
135
+ try {
136
+ ctx.emit(`Instalando skill desde: ${source}…`);
137
+ await manager.install(source, {
138
+ projectDir: isGlobal ? undefined : ctx.projectDir,
139
+ });
140
+ const scope = isGlobal ? 'global' : 'proyecto';
141
+ await ctx.reloadSkills?.();
142
+ ctx.emit(`✓ Skill instalada (scope: ${scope}).`);
143
+ }
144
+ catch (err) {
145
+ ctx.emit(`✗ Error al instalar: ${err.message}`);
146
+ }
147
+ return;
148
+ }
149
+ // ── /skills create <nombre> [--global] ───────────────────────────────
150
+ if (sub === 'create') {
151
+ const name = parts[1];
152
+ if (!name) {
153
+ ctx.emit('Uso: /skills create <nombre> [--global]\n' +
154
+ ' /skills create mi-skill → crea en el proyecto actual\n' +
155
+ ' /skills create mi-skill --global → crea en el directorio global\n\n' +
156
+ 'El nombre debe ser kebab-case (ej: code-review-nestjs, deploy-docker).');
157
+ return;
158
+ }
159
+ if (!/^[a-z0-9][a-z0-9-]*$/.test(name)) {
160
+ ctx.emit('✗ El nombre debe ser kebab-case (solo letras minúsculas, números y guiones).');
161
+ return;
162
+ }
163
+ const isGlobal = parts.includes('--global');
164
+ const appName = ctx.appName ?? 'bk-agent';
165
+ const dir = isGlobal || !ctx.projectDir
166
+ ? path.join((0, project_key_1.getFrameworkDir)(appName), 'skills', 'global')
167
+ : path.join(ctx.projectDir, 'skills');
168
+ const filePath = path.join(dir, `${name}.md`);
169
+ const exists = await (0, result_1.run)(() => fs.access(filePath));
170
+ if ((0, result_1.isOk)(exists)) {
171
+ ctx.emit(`✗ Ya existe una skill con ese nombre: ${filePath}`);
172
+ return;
173
+ }
174
+ const template = [
175
+ '---',
176
+ `name: ${name}`,
177
+ 'version: 1.0.0',
178
+ 'description: ',
179
+ 'triggers:',
180
+ ' - ',
181
+ '---',
182
+ '',
183
+ '',
184
+ ].join('\n');
185
+ await fs.mkdir(dir, { recursive: true });
186
+ await (0, atomic_write_1.atomicWrite)(filePath, template);
187
+ await ctx.reloadSkills?.();
188
+ ctx.emit(`✓ Skill creada: ${filePath}`);
189
+ return;
190
+ }
191
+ // ── /skills generate <descripción> [--global] ────────────────────────
192
+ if (sub === 'generate') {
193
+ const isGlobal = parts.includes('--global');
194
+ const description = parts.slice(1).filter(p => p !== '--global').join(' ');
195
+ if (!description) {
196
+ ctx.emit('Uso: /skills generate <descripción> [--global]\n' +
197
+ ' /skills generate "proceso de code review para NestJS"\n' +
198
+ ' /skills generate "flujo de deploy con Docker Compose" --global');
199
+ return;
200
+ }
201
+ if (!ctx.llm) {
202
+ ctx.emit('✗ LLM no disponible en este contexto.\n' +
203
+ 'Usá /skills create <nombre> para crear la skill manualmente.');
204
+ return;
205
+ }
206
+ const appName = ctx.appName ?? 'bk-agent';
207
+ const dir = isGlobal || !ctx.projectDir
208
+ ? path.join((0, project_key_1.getFrameworkDir)(appName), 'skills', 'global')
209
+ : path.join(ctx.projectDir, 'skills');
210
+ ctx.emit('Generando skill…');
211
+ const prompt = `Generate a skill file in .md format with YAML frontmatter.\n` +
212
+ `Output raw file content only — no markdown code fences, no extra explanation.\n\n` +
213
+ `Required format:\n` +
214
+ `---\n` +
215
+ `name: <kebab-case name, max 4 words>\n` +
216
+ `version: 1.0.0\n` +
217
+ `description: <one concise line>\n` +
218
+ `triggers:\n` +
219
+ ` - <keyword1>\n` +
220
+ ` - <keyword2>\n` +
221
+ ` - <keyword3>\n` +
222
+ `---\n\n` +
223
+ `<Clear step-by-step instructions in markdown>\n\n` +
224
+ `Description: "${description.slice(0, 500)}"`;
225
+ let md;
226
+ try {
227
+ const raw = await ctx.llm(prompt);
228
+ md = raw.replace(/^```(?:md|markdown)?\n?/im, '').replace(/```\s*$/m, '').trim();
229
+ }
230
+ catch (err) {
231
+ ctx.emit(`✗ Error generando skill: ${err.message}`);
232
+ return;
233
+ }
234
+ const skill = (0, parse_md_skill_1.parseMdSkill)(md);
235
+ if (!skill?.name) {
236
+ ctx.emit('✗ La respuesta del LLM no tiene el formato esperado.\n' +
237
+ 'Usá /skills create <nombre> para crear la skill manualmente.');
238
+ return;
239
+ }
240
+ const filePath = path.join(dir, `${skill.name}.md`);
241
+ const exists = await (0, result_1.run)(() => fs.access(filePath));
242
+ if ((0, result_1.isOk)(exists)) {
243
+ ctx.emit(`✗ Ya existe una skill con ese nombre: ${filePath}`);
244
+ return;
245
+ }
246
+ await fs.mkdir(dir, { recursive: true });
247
+ await (0, atomic_write_1.atomicWrite)(filePath, md);
248
+ await ctx.reloadSkills?.();
249
+ ctx.emit(`✓ Skill "${skill.name}" generada: ${filePath}`);
250
+ return;
251
+ }
252
+ // ── /skills uninstall <pack> ──────────────────────────────────────────
253
+ if (sub === 'uninstall') {
254
+ const pack = parts[1];
255
+ const appName = ctx.appName ?? 'bk-agent';
256
+ const manager = (0, manager_1.createSkillManager)(appName);
257
+ if (!pack) {
258
+ const packs = await manager.list();
259
+ if (!packs.length) {
260
+ ctx.emit('No hay packs instalados.\nUsá /skills install <url> para instalar uno.');
261
+ return;
262
+ }
263
+ if (ctx.prompt) {
264
+ const options = packs.map(p => ({
265
+ label: `${p.pack.padEnd(26)} skills: ${p.skills.join(', ')}`,
266
+ value: p.pack,
267
+ }));
268
+ const selected = await ctx.prompt('Seleccioná el pack a desinstalar:', options);
269
+ if (!selected)
270
+ return;
271
+ try {
272
+ await manager.uninstall(selected);
273
+ ctx.emit(`✓ Pack "${selected}" desinstalado.`);
274
+ }
275
+ catch (err) {
276
+ ctx.emit(`✗ Error: ${err.message}`);
277
+ }
278
+ }
279
+ else {
280
+ const lines = packs.map(p => ` ${p.pack.padEnd(26)} ${p.skills.join(', ')}`);
281
+ ctx.emit('Packs instalados:\n' + lines.join('\n') + '\n\nUsá: /skills uninstall <pack>');
282
+ }
283
+ return;
284
+ }
285
+ try {
286
+ await manager.uninstall(pack);
287
+ ctx.emit(`✓ Pack "${pack}" desinstalado.`);
288
+ }
289
+ catch (err) {
290
+ ctx.emit(`✗ Error: ${err.message}`);
291
+ }
292
+ return;
293
+ }
294
+ // ── /skills update <pack> ─────────────────────────────────────────────
295
+ if (sub === 'update') {
296
+ const pack = parts[1];
297
+ const appName = ctx.appName ?? 'bk-agent';
298
+ const manager = (0, manager_1.createSkillManager)(appName);
299
+ if (!pack) {
300
+ const packs = await manager.list();
301
+ if (!packs.length) {
302
+ ctx.emit('No hay packs instalados.\nUsá /skills install <url> para instalar uno.');
303
+ return;
304
+ }
305
+ if (ctx.prompt) {
306
+ const options = packs.map(p => ({
307
+ label: `${p.pack.padEnd(26)} instalado: ${p.installedAt.slice(0, 10)}`,
308
+ value: p.pack,
309
+ }));
310
+ const selected = await ctx.prompt('Seleccioná el pack a actualizar:', options);
311
+ if (!selected)
312
+ return;
313
+ try {
314
+ ctx.emit(`Actualizando "${selected}"…`);
315
+ await manager.update(selected);
316
+ ctx.emit(`✓ Pack "${selected}" actualizado. Reinicia para aplicar los cambios.`);
317
+ }
318
+ catch (err) {
319
+ ctx.emit(`✗ Error: ${err.message}`);
320
+ }
321
+ }
322
+ else {
323
+ const lines = packs.map(p => ` ${p.pack.padEnd(26)} instalado: ${p.installedAt.slice(0, 10)}`);
324
+ ctx.emit('Packs instalados:\n' + lines.join('\n') + '\n\nUsá: /skills update <pack>');
325
+ }
326
+ return;
327
+ }
328
+ try {
329
+ ctx.emit(`Actualizando "${pack}"…`);
330
+ await manager.update(pack);
331
+ ctx.emit(`✓ Pack "${pack}" actualizado. Reinicia para aplicar los cambios.`);
332
+ }
333
+ catch (err) {
334
+ ctx.emit(`✗ Error: ${err.message}`);
335
+ }
336
+ return;
337
+ }
338
+ // ── /skills reload ────────────────────────────────────────────────────
339
+ if (sub === 'reload') {
340
+ if (!ctx.reloadSkills) {
341
+ ctx.emit('✗ Reload no disponible en este contexto.');
342
+ return;
343
+ }
344
+ ctx.emit('Recargando skills…');
345
+ await ctx.reloadSkills();
346
+ ctx.emit('✓ Skills recargadas.');
347
+ return;
348
+ }
349
+ // ── /skills list (default) ────────────────────────────────────────────
350
+ const SUBCOMMANDS_HINT = '\n\nSubcomandos: install | create | generate | update | uninstall | reload';
351
+ if (!ctx.skills?.length) {
352
+ ctx.emit('No skills cargadas.' + SUBCOMMANDS_HINT);
353
+ return;
354
+ }
355
+ if (ctx.prompt) {
356
+ const options = ctx.skills.map(s => ({
357
+ label: `${s.name.padEnd(26)} ${s.description}`,
358
+ value: s.name,
359
+ }));
360
+ const INSTALL = '__install__';
361
+ const selected = await ctx.prompt('Skills disponibles:', [
362
+ ...options,
363
+ { label: '+ Instalar pack desde URL...', value: INSTALL },
364
+ ]);
365
+ if (!selected || selected === INSTALL) {
366
+ if (selected === INSTALL) {
367
+ ctx.emit('Para instalar un pack escribí:\n /skills install https://skills.sh/owner/repo');
368
+ }
369
+ return;
370
+ }
371
+ const skill = ctx.skills.find(s => s.name === selected);
372
+ if (skill) {
373
+ ctx.emit([
374
+ `Skill: ${skill.name}`,
375
+ `Descripción: ${skill.description}`,
376
+ skill.triggers.length ? `Triggers: ${skill.triggers.join(', ')}` : '',
377
+ skill.language?.length ? `Lenguajes: ${skill.language.join(', ')}` : '',
378
+ `Scope: ${skill.scope ?? '—'}`,
379
+ ].filter(Boolean).join('\n'));
380
+ }
381
+ }
382
+ else {
383
+ const lines = ctx.skills.map(s => ` ${s.name.padEnd(26)} ${s.description}${s.scope === 'project' ? ' [proyecto]' : ''}`);
384
+ ctx.emit('Skills:\n' + lines.join('\n') + SUBCOMMANDS_HINT);
385
+ }
386
+ });
387
+ registry.register('/status', 'Show current agent and model', async (ctx) => {
388
+ ctx.emit([
389
+ `Agent : ${ctx.effectiveAgentId ?? '—'}`,
390
+ `Model : ${ctx.model ?? '—'}`,
391
+ `Iteration : ${ctx.getIterationMode?.() ?? '—'}`,
392
+ ].join('\n'));
393
+ });
394
+ registry.register('/iteration', 'Change or show the iteration mode', async (ctx) => {
395
+ const MODES = [
396
+ { value: 'interactive', label: 'interactive', description: 'Pauses every N iterations — you decide whether to continue' },
397
+ { value: 'auto', label: 'auto', description: 'Never pauses — runs until done or global cap (1000)' },
398
+ { value: 'step-by-step', label: 'step-by-step', description: 'Pauses after every single iteration for maximum control' },
399
+ ];
400
+ const current = ctx.getIterationMode?.();
401
+ // Arg directo: /iteration auto | /iteration step-by-step | /iteration interactive
402
+ if (ctx.args) {
403
+ const arg = ctx.args.trim();
404
+ if (MODES.some(m => m.value === arg)) {
405
+ ctx.setIterationMode?.(arg);
406
+ ctx.emit(`Iteration mode → ${arg}`);
407
+ }
408
+ else {
409
+ ctx.emit(`Unknown mode "${arg}". Options: interactive | auto | step-by-step`);
410
+ }
411
+ return;
412
+ }
413
+ // Sin arg: mostrar modo actual y permitir elegir
414
+ if (ctx.prompt) {
415
+ const selected = await ctx.prompt(`Iteration mode (current: ${current ?? '—'}):`, MODES.map(m => ({
416
+ label: `${m.value.padEnd(16)} ${m.description}`,
417
+ value: m.value,
418
+ })));
419
+ if (selected) {
420
+ ctx.setIterationMode?.(selected);
421
+ ctx.emit(`Iteration mode → ${selected}`);
422
+ }
423
+ }
424
+ else {
425
+ const lines = MODES.map(m => ` ${(current === m.value ? '▶ ' : ' ')}${m.value.padEnd(16)} ${m.description}`);
426
+ ctx.emit(`Iteration mode (current: ${current ?? '—'}):\n${lines.join('\n')}\n\nUse /iteration <mode> to change.`);
427
+ }
428
+ });
429
+ registry.register('/workspace', 'Manage multi-project workspaces', async (ctx) => {
430
+ const { args, emit, appName, injectContext, onCwdChange } = ctx;
431
+ if (!appName) {
432
+ emit('appName not set in CommandContext.');
433
+ return;
434
+ }
435
+ const parts = (args ?? '').split(' ').filter(Boolean);
436
+ const sub = parts[0];
437
+ // ── /workspace or /workspace list ──────────────────────────────────
438
+ if (!sub || sub === 'list') {
439
+ const config = await (0, workspace_1.loadWorkspaces)(appName);
440
+ const names = Object.keys(config);
441
+ if (!names.length) {
442
+ emit('No hay workspaces configurados.\n\n' +
443
+ 'Comandos disponibles:\n' +
444
+ ' /workspace create <name> Crear workspace nuevo\n' +
445
+ ' /workspace add <ws> <cwd> [name] Agregar proyecto existente\n' +
446
+ ' /workspace import <cwd> [ws] [name] Importar proyecto (crea ws si no existe)\n' +
447
+ ' /workspace switch <ws> [project] Cambiar workspace/proyecto activo\n' +
448
+ ' /workspace remove <ws> <project> Quitar proyecto del workspace\n' +
449
+ ' /workspace delete <name> Eliminar workspace\n' +
450
+ ' /workspace list Listar workspaces');
451
+ return;
452
+ }
453
+ if (ctx.prompt && !sub) {
454
+ // Interactive: let the user pick a workspace+project to switch to directly
455
+ const options = names.flatMap(wsName => {
456
+ const ws = config[wsName];
457
+ return ws.projects.map(p => ({
458
+ label: `${wsName.padEnd(18)} ${p.name}${p.name === ws.active ? ' *' : ''}`,
459
+ value: `${wsName}::${p.name}`,
460
+ }));
461
+ });
462
+ const selected = await ctx.prompt('Workspaces — select to switch:', options);
463
+ if (!selected)
464
+ return;
465
+ const [wsName, projectName] = selected.split('::');
466
+ sub === undefined && await doSwitch(wsName, projectName, config, appName, emit, injectContext, onCwdChange);
467
+ return;
468
+ }
469
+ const lines = names.map(n => {
470
+ const ws = config[n];
471
+ const projects = ws.projects
472
+ .map(p => `${p.name}${p.name === ws.active ? '*' : ''}`)
473
+ .join(', ') || '(vacío)';
474
+ return ` ${n.padEnd(20)} ${projects}`;
475
+ });
476
+ emit('Workspaces (* = proyecto activo):\n' + lines.join('\n') + '\n\n' +
477
+ 'Comandos:\n' +
478
+ ' /workspace create <name> Crear workspace\n' +
479
+ ' /workspace add <ws> <cwd> [name] Agregar proyecto\n' +
480
+ ' /workspace import <cwd> [ws] [name] Importar proyecto\n' +
481
+ ' /workspace switch <ws> [project] Cambiar activo\n' +
482
+ ' /workspace remove <ws> <project> Quitar proyecto\n' +
483
+ ' /workspace delete <name> Eliminar workspace');
484
+ return;
485
+ }
486
+ // ── /workspace create <name> ──────────────────────────────────────────
487
+ if (sub === 'create') {
488
+ const name = parts[1];
489
+ if (!name) {
490
+ emit('Usage: /workspace create <name>');
491
+ return;
492
+ }
493
+ const config = await (0, workspace_1.loadWorkspaces)(appName);
494
+ if (config[name]) {
495
+ emit(`Workspace "${name}" already exists.`);
496
+ return;
497
+ }
498
+ await (0, workspace_1.saveWorkspaces)(appName, (0, workspace_1.createWorkspace)(config, name));
499
+ emit(`Workspace "${name}" created.`);
500
+ return;
501
+ }
502
+ // ── /workspace add <workspace> <cwd> [name] ──────────────────────────
503
+ if (sub === 'add') {
504
+ const [, wsName, cwd, projectName] = parts;
505
+ if (!wsName || !cwd) {
506
+ emit('Usage: /workspace add <workspace> <cwd> [name]');
507
+ return;
508
+ }
509
+ const resolvedCwd = path.resolve(cwd);
510
+ const name = projectName ?? (0, workspace_1.deriveProjectName)(resolvedCwd);
511
+ try {
512
+ const config = await (0, workspace_1.loadWorkspaces)(appName);
513
+ await (0, workspace_1.saveWorkspaces)(appName, (0, workspace_1.addProject)(config[wsName] ? config : (0, workspace_1.createWorkspace)(config, wsName), wsName, { name, cwd: resolvedCwd }));
514
+ emit(`Added "${name}" to workspace "${wsName}".\n cwd: ${resolvedCwd}`);
515
+ }
516
+ catch (e) {
517
+ emit(`Error: ${e.message}`);
518
+ }
519
+ return;
520
+ }
521
+ // ── /workspace import <cwd> [workspace] [name] ───────────────────────
522
+ // Like add but auto-creates the workspace if missing. Useful for quick onboarding.
523
+ if (sub === 'import') {
524
+ const [, cwd, wsName, projectName] = parts;
525
+ if (!cwd) {
526
+ emit('Usage: /workspace import <cwd> [workspace] [name]');
527
+ return;
528
+ }
529
+ const resolvedCwd = path.resolve(cwd);
530
+ const name = projectName ?? (0, workspace_1.deriveProjectName)(resolvedCwd);
531
+ const ws = wsName ?? name;
532
+ try {
533
+ const config = await (0, workspace_1.loadWorkspaces)(appName);
534
+ await (0, workspace_1.saveWorkspaces)(appName, (0, workspace_1.importProject)(config, ws, { name, cwd: resolvedCwd }));
535
+ emit(`Imported "${name}" into workspace "${ws}".\n cwd: ${resolvedCwd}`);
536
+ }
537
+ catch (e) {
538
+ emit(`Error: ${e.message}`);
539
+ }
540
+ return;
541
+ }
542
+ // ── /workspace remove <workspace> <project> ───────────────────────────
543
+ if (sub === 'remove') {
544
+ const [, wsName, projectName] = parts;
545
+ if (!wsName || !projectName) {
546
+ emit('Usage: /workspace remove <workspace> <project>');
547
+ return;
548
+ }
549
+ const config = await (0, workspace_1.loadWorkspaces)(appName);
550
+ if (!config[wsName]) {
551
+ emit(`Workspace "${wsName}" not found.`);
552
+ return;
553
+ }
554
+ try {
555
+ await (0, workspace_1.saveWorkspaces)(appName, (0, workspace_1.removeProject)(config, wsName, projectName));
556
+ emit(`Removed "${projectName}" from workspace "${wsName}".`);
557
+ }
558
+ catch (e) {
559
+ emit(`Error: ${e.message}`);
560
+ }
561
+ return;
562
+ }
563
+ // ── /workspace delete <name> ──────────────────────────────────────────
564
+ if (sub === 'delete') {
565
+ const name = parts[1];
566
+ if (!name) {
567
+ emit('Usage: /workspace delete <name>');
568
+ return;
569
+ }
570
+ const config = await (0, workspace_1.loadWorkspaces)(appName);
571
+ if (!config[name]) {
572
+ emit(`Workspace "${name}" not found.`);
573
+ return;
574
+ }
575
+ await (0, workspace_1.saveWorkspaces)(appName, (0, workspace_1.deleteWorkspace)(config, name));
576
+ emit(`Workspace "${name}" deleted.`);
577
+ return;
578
+ }
579
+ // ── /workspace switch <workspace> [project] ───────────────────────────
580
+ if (sub === 'switch') {
581
+ const [, wsName, projectName] = parts;
582
+ const config = await (0, workspace_1.loadWorkspaces)(appName);
583
+ // No args after switch → interactive picker
584
+ if (!wsName && ctx.prompt) {
585
+ const names = Object.keys(config);
586
+ if (!names.length) {
587
+ emit('No workspaces configured.');
588
+ return;
589
+ }
590
+ const options = names.flatMap(wn => {
591
+ const ws = config[wn];
592
+ return ws.projects.map(p => ({
593
+ label: `${wn.padEnd(18)} ${p.name}${p.name === ws.active ? ' *' : ''}`,
594
+ value: `${wn}::${p.name}`,
595
+ }));
596
+ });
597
+ const selected = await ctx.prompt('Switch to:', options);
598
+ if (!selected)
599
+ return;
600
+ const [selWs, selProject] = selected.split('::');
601
+ await doSwitch(selWs, selProject, config, appName, emit, injectContext, onCwdChange);
602
+ return;
603
+ }
604
+ if (!wsName) {
605
+ emit('Usage: /workspace switch <workspace> [project]');
606
+ return;
607
+ }
608
+ const ws = config[wsName];
609
+ if (!ws) {
610
+ emit(`Workspace "${wsName}" not found.`);
611
+ return;
612
+ }
613
+ if (!ws.projects.length) {
614
+ emit(`Workspace "${wsName}" has no projects.`);
615
+ return;
616
+ }
617
+ const target = projectName
618
+ ? ws.projects.find(p => p.name === projectName)
619
+ : (ws.projects.find(p => p.name === ws.active) ?? ws.projects[0]);
620
+ if (!target) {
621
+ emit(`Project "${projectName}" not found in workspace "${wsName}".`);
622
+ return;
623
+ }
624
+ await doSwitch(wsName, target.name, config, appName, emit, injectContext, onCwdChange);
625
+ return;
626
+ }
627
+ emit([
628
+ 'Usage:',
629
+ ' /workspace list',
630
+ ' /workspace create <name>',
631
+ ' /workspace add <workspace> <cwd> [name]',
632
+ ' /workspace import <cwd> [workspace] [name]',
633
+ ' /workspace remove <workspace> <project>',
634
+ ' /workspace delete <name>',
635
+ ' /workspace switch [workspace] [project]',
636
+ ].join('\n'));
637
+ });
638
+ registry.register('/checkpoint', 'Create / list / load session checkpoints', async (ctx) => {
639
+ const { args, emit, projectDir, sessionContent, injectContext } = ctx;
640
+ if (!projectDir) {
641
+ emit('No active project directory.');
642
+ return;
643
+ }
644
+ // /checkpoint list
645
+ if (args === 'list') {
646
+ const all = await (0, checkpoint_1.listCheckpoints)(projectDir);
647
+ if (!all.length) {
648
+ emit('No checkpoints saved.');
649
+ return;
650
+ }
651
+ const latest = (0, checkpoint_1.getLatestCheckpoints)(all);
652
+ const lines = latest.map((cp, i) => {
653
+ const count = all.filter(c => c.feature === cp.feature).length;
654
+ const label = (cp.feature || '(unnamed)').padEnd(24);
655
+ const timeDisplay = cp.time ? `${cp.time.slice(0, 2)}:${cp.time.slice(2)}` : '';
656
+ const versions = count > 1 ? ` (${count} versions)` : '';
657
+ return ` ${i + 1}. ${label} ${cp.date} ${timeDisplay}${versions}`;
658
+ });
659
+ emit(lines.join('\n'));
660
+ return;
661
+ }
662
+ // /checkpoint load [feature]
663
+ if (args === 'load' || args.startsWith('load ')) {
664
+ const target = args.slice(4).trim();
665
+ const all = await (0, checkpoint_1.listCheckpoints)(projectDir);
666
+ if (!all.length) {
667
+ emit('No checkpoints saved.');
668
+ return;
669
+ }
670
+ let match = target
671
+ ? all.find(cp => cp.feature === target || cp.feature.includes(target))
672
+ : all[0]; // most recent overall
673
+ if (!match) {
674
+ emit(`Checkpoint not found: ${target}`);
675
+ return;
676
+ }
677
+ const raw = await (0, checkpoint_1.readCheckpoint)(projectDir, match.filename);
678
+ if (raw) {
679
+ const session = (0, checkpoint_1.extractSessionFromCheckpoint)(raw);
680
+ const timeDisplay = match.time ? `${match.time.slice(0, 2)}:${match.time.slice(2)}` : '';
681
+ const label = match.feature || 'unnamed';
682
+ injectContext?.(`## Checkpoint: ${label} (${match.date} ${timeDisplay})\n\n${session}`);
683
+ emit(`Checkpoint loaded: ${label}`);
684
+ }
685
+ return;
686
+ }
687
+ // /checkpoint [name] — create (name optional)
688
+ const featureName = args ?? '';
689
+ const cpPath = await (0, checkpoint_1.createCheckpoint)(projectDir, featureName, '', sessionContent ?? '');
690
+ const label = featureName || '(unnamed)';
691
+ emit(`Checkpoint saved: ${label}\n${cpPath}`);
692
+ });
693
+ }
694
+ //# sourceMappingURL=builtin.js.map