@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,97 @@
1
+ import type { SkillSourceProvider } from './providers/types';
2
+ import type { SkillPackSource, TrustConfig } from './types';
3
+ export interface InstallOptions {
4
+ /** Only install this specific skill from the source (by name) */
5
+ skill?: string;
6
+ /** Override the derived pack name */
7
+ pack?: string;
8
+ /** Overwrite if already installed */
9
+ force?: boolean;
10
+ /**
11
+ * Install into a project-scoped directory instead of global packs.
12
+ * Skills are written flat to {projectDir}/skills/ and tracked in
13
+ * {projectDir}/skills/sources.json.
14
+ * This covers: internet-installed skills, LearningRouter auto-generated skills,
15
+ * and manually created project skills — all non-git-tracked.
16
+ */
17
+ projectDir?: string;
18
+ }
19
+ export interface InstalledPack extends SkillPackSource {
20
+ /** Skill names found in this pack's directory */
21
+ skills: string[];
22
+ }
23
+ /**
24
+ * Manages lifecycle of external skill packs: install, uninstall, list, update.
25
+ *
26
+ * Skills are stored as .md files with YAML frontmatter.
27
+ *
28
+ * Safety guarantee: disk is only modified after ALL network fetches succeed.
29
+ * If a fetch fails mid-way, existing packs are untouched.
30
+ *
31
+ * Security: pass a TrustConfig to restrict which sources can be installed.
32
+ * const manager = new SkillManager('my-app', {
33
+ * allowedSources: ['https://github.com/my-org/', 'https://skills.sh/'],
34
+ * })
35
+ *
36
+ * Extend with custom sources:
37
+ * manager.use(new MyProvider())
38
+ */
39
+ export declare class SkillManager {
40
+ private readonly appName;
41
+ private readonly packsDir;
42
+ private readonly sourcesFile;
43
+ private readonly providers;
44
+ private readonly trust;
45
+ constructor(appName: string, trust?: TrustConfig);
46
+ /**
47
+ * Registers an additional source provider.
48
+ * Registered providers take precedence over built-in ones.
49
+ */
50
+ use(provider: SkillSourceProvider): this;
51
+ install(source: string, options?: InstallOptions): Promise<void>;
52
+ uninstall(packName: string): Promise<void>;
53
+ list(): Promise<InstalledPack[]>;
54
+ update(packName: string): Promise<void>;
55
+ /**
56
+ * Throws if the source is not in the allowlist.
57
+ * When allowedSources is undefined the manager is in open mode — any source is accepted.
58
+ */
59
+ private assertTrusted;
60
+ /**
61
+ * Validates content bounds on all skills from a source.
62
+ * Prevents prompt-flooding even from trusted sources.
63
+ */
64
+ private sanitize;
65
+ private derivePackName;
66
+ private packDir;
67
+ private loadSources;
68
+ private loadSourcesFrom;
69
+ private upsertSource;
70
+ private upsertSourceTo;
71
+ private removeSource;
72
+ }
73
+ /**
74
+ * Standard factory for SkillManager.
75
+ * Use this instead of `new SkillManager()` in agent implementations.
76
+ *
77
+ * - Reads TrustConfig from env vars so security is configured at the host level:
78
+ * BK_TRUSTED_SOURCES — comma-separated source prefixes (open mode if unset)
79
+ * BK_MAX_PROMPT_BYTES — max bytes for systemPromptAddition (default: 20 000)
80
+ *
81
+ * - ObsidianProvider is NOT registered by default — call `.use(new ObsidianProvider())`
82
+ * when the agent needs vault access (it requires a user-specific vault path).
83
+ *
84
+ * @example
85
+ * // Basic — open mode, all built-in sources
86
+ * const manager = createSkillManager('my-app');
87
+ *
88
+ * // With allowlist
89
+ * const manager = createSkillManager('my-app', {
90
+ * allowedSources: ['https://github.com/my-org/', 'https://skills.sh/'],
91
+ * });
92
+ *
93
+ * // With Obsidian support
94
+ * const manager = createSkillManager('my-app').use(new ObsidianProvider());
95
+ */
96
+ export declare function createSkillManager(appName: string, trust?: TrustConfig): SkillManager;
97
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/skills/manager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAS,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC3B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IAClD,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAID;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY;IAMT,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAEP,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,WAAgB;IAYrE;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAKlC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiEpE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAehC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7C;;;OAGG;IACH,OAAO,CAAC,aAAa;IAcrB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,OAAO;YAID,WAAW;YAIX,eAAe;YAWf,YAAY;YAIZ,cAAc;YASd,YAAY;CAK7B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,YAAY,CAmBrF"}
@@ -0,0 +1,296 @@
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.SkillManager = void 0;
37
+ exports.createSkillManager = createSkillManager;
38
+ const fs = __importStar(require("fs/promises"));
39
+ const path = __importStar(require("path"));
40
+ const result_1 = require("@backendkit-labs/result");
41
+ const project_key_1 = require("../shared/utils/project-key");
42
+ const atomic_write_1 = require("../shared/utils/atomic-write");
43
+ const parse_md_skill_1 = require("./parse-md-skill");
44
+ const github_1 = require("./providers/github");
45
+ const local_1 = require("./providers/local");
46
+ const skills_sh_1 = require("./providers/skills-sh");
47
+ const DEFAULT_MAX_PROMPT_BYTES = 20_000;
48
+ /**
49
+ * Manages lifecycle of external skill packs: install, uninstall, list, update.
50
+ *
51
+ * Skills are stored as .md files with YAML frontmatter.
52
+ *
53
+ * Safety guarantee: disk is only modified after ALL network fetches succeed.
54
+ * If a fetch fails mid-way, existing packs are untouched.
55
+ *
56
+ * Security: pass a TrustConfig to restrict which sources can be installed.
57
+ * const manager = new SkillManager('my-app', {
58
+ * allowedSources: ['https://github.com/my-org/', 'https://skills.sh/'],
59
+ * })
60
+ *
61
+ * Extend with custom sources:
62
+ * manager.use(new MyProvider())
63
+ */
64
+ class SkillManager {
65
+ appName;
66
+ packsDir;
67
+ sourcesFile;
68
+ providers;
69
+ trust;
70
+ constructor(appName, trust = {}) {
71
+ this.appName = appName;
72
+ const skillsDir = path.join((0, project_key_1.getFrameworkDir)(appName), 'skills');
73
+ this.packsDir = path.join(skillsDir, 'packs');
74
+ this.sourcesFile = path.join(skillsDir, 'sources.json');
75
+ this.trust = trust;
76
+ this.providers = [
77
+ new github_1.GitHubProvider(appName),
78
+ new skills_sh_1.SkillsShProvider(appName),
79
+ new local_1.LocalProvider(),
80
+ ];
81
+ }
82
+ /**
83
+ * Registers an additional source provider.
84
+ * Registered providers take precedence over built-in ones.
85
+ */
86
+ use(provider) {
87
+ this.providers.unshift(provider);
88
+ return this;
89
+ }
90
+ async install(source, options = {}) {
91
+ // Security gate — checked before any network activity
92
+ this.assertTrusted(source);
93
+ const packName = options.pack ?? this.derivePackName(source);
94
+ // Project-scoped: flat install into {projectDir}/skills/
95
+ // Global-scoped: install into ~/.{appName}/skills/packs/{pack}/
96
+ const { projectDir } = options;
97
+ const installDir = projectDir
98
+ ? path.join(projectDir, 'skills')
99
+ : this.packDir(packName);
100
+ if (!options.force) {
101
+ // For project-scoped, check if source is already in project sources.json
102
+ const existingSources = projectDir
103
+ ? await this.loadSourcesFrom(path.join(projectDir, 'skills', 'sources.json'))
104
+ : await this.loadSources();
105
+ const alreadyInstalled = existingSources.some(s => s.pack === packName);
106
+ if (alreadyInstalled) {
107
+ throw new Error(`Pack '${packName}' is already installed. Use force: true or call update() to refresh.`);
108
+ }
109
+ }
110
+ const provider = this.providers.find(p => p.canHandle(source));
111
+ if (!provider) {
112
+ throw new Error(`No provider found for source: '${source}'.\n` +
113
+ `Built-in providers: GitHub URLs (https://github.com/...), local paths (/abs or ./rel).\n` +
114
+ `Register custom providers with manager.use(new MyProvider()).`);
115
+ }
116
+ // Fetch everything into memory first — no disk writes until all succeed
117
+ const raw = await provider.fetch(source, { skill: options.skill });
118
+ if (raw.length === 0) {
119
+ throw new Error(`No valid skills found in '${source}'` +
120
+ (options.skill ? ` matching skill '${options.skill}'` : '') + '.');
121
+ }
122
+ // Content sanitization — even trusted sources are bounded
123
+ const skills = this.sanitize(raw, source);
124
+ // Write to disk only after successful fetch and sanitization
125
+ await fs.mkdir(installDir, { recursive: true });
126
+ await Promise.all(skills.map(skill => {
127
+ const filePath = path.join(installDir, `${skill.name}.md`);
128
+ return (0, atomic_write_1.atomicWrite)(filePath, (0, parse_md_skill_1.skillToMd)(skill));
129
+ }));
130
+ const entry = { pack: packName, source, installedAt: new Date().toISOString() };
131
+ if (projectDir) {
132
+ await this.upsertSourceTo(path.join(projectDir, 'skills', 'sources.json'), entry);
133
+ }
134
+ else {
135
+ await this.upsertSource(entry);
136
+ }
137
+ }
138
+ async uninstall(packName) {
139
+ const packDir = this.packDir(packName);
140
+ const result = await (0, result_1.run)(() => fs.rm(packDir, { recursive: true, force: true }));
141
+ if (!(0, result_1.isOk)(result)) {
142
+ throw new Error(`Failed to remove pack '${packName}': ${String(result.error)}`);
143
+ }
144
+ await this.removeSource(packName);
145
+ }
146
+ async list() {
147
+ const sources = await this.loadSources();
148
+ return Promise.all(sources.map(async (src) => {
149
+ const filesResult = await (0, result_1.run)(() => fs.readdir(this.packDir(src.pack)));
150
+ const skills = (0, result_1.isOk)(filesResult)
151
+ ? filesResult.value
152
+ .filter(f => /\.(ya?ml|md)$/.test(f))
153
+ .map(f => f.replace(/\.(ya?ml|md)$/, ''))
154
+ : [];
155
+ return { ...src, skills };
156
+ }));
157
+ }
158
+ async update(packName) {
159
+ const sources = await this.loadSources();
160
+ const entry = sources.find(s => s.pack === packName);
161
+ if (!entry)
162
+ throw new Error(`Pack '${packName}' is not installed. Run install() first.`);
163
+ await this.install(entry.source, { pack: packName, force: true });
164
+ }
165
+ // ---------------------------------------------------------------------------
166
+ // Security
167
+ // ---------------------------------------------------------------------------
168
+ /**
169
+ * Throws if the source is not in the allowlist.
170
+ * When allowedSources is undefined the manager is in open mode — any source is accepted.
171
+ */
172
+ assertTrusted(source) {
173
+ const { allowedSources } = this.trust;
174
+ if (!allowedSources)
175
+ return; // open mode
176
+ const trusted = allowedSources.some(prefix => source.startsWith(prefix));
177
+ if (!trusted) {
178
+ throw new Error(`Source '${source}' is not in the trusted allowlist.\n` +
179
+ `Allowed prefixes: ${allowedSources.join(', ')}\n` +
180
+ `Pass the source to TrustConfig.allowedSources to authorize it.`);
181
+ }
182
+ }
183
+ /**
184
+ * Validates content bounds on all skills from a source.
185
+ * Prevents prompt-flooding even from trusted sources.
186
+ */
187
+ sanitize(skills, source) {
188
+ const maxBytes = this.trust.maxPromptBytes ?? DEFAULT_MAX_PROMPT_BYTES;
189
+ for (const skill of skills) {
190
+ if (!skill.systemPromptAddition)
191
+ continue;
192
+ const bytes = Buffer.byteLength(skill.systemPromptAddition, 'utf-8');
193
+ if (bytes > maxBytes) {
194
+ throw new Error(`Skill '${skill.name}' from '${source}' exceeds the allowed prompt size.\n` +
195
+ `Got ${bytes} bytes, limit is ${maxBytes} bytes.\n` +
196
+ `Raise TrustConfig.maxPromptBytes if this source is intentionally verbose.`);
197
+ }
198
+ }
199
+ return skills;
200
+ }
201
+ // ---------------------------------------------------------------------------
202
+ // Private
203
+ // ---------------------------------------------------------------------------
204
+ derivePackName(source) {
205
+ const githubMatch = source.match(/github\.com\/([^/]+)\/([^/?#]+)/i);
206
+ if (githubMatch)
207
+ return `@${githubMatch[1]}`;
208
+ const skillsShMatch = source.match(/skills\.sh\/([^/?#]+)\/([^/?#]+)/i);
209
+ if (skillsShMatch)
210
+ return `@${skillsShMatch[1]}/${skillsShMatch[2]}`;
211
+ if (source.startsWith('obsidian://')) {
212
+ const params = new URLSearchParams(source.split('?')[1] ?? '');
213
+ return `obsidian-${params.get('folder')?.replace(/\//g, '-') ?? 'vault'}`;
214
+ }
215
+ return path.basename(source);
216
+ }
217
+ packDir(packName) {
218
+ return path.join(this.packsDir, packName.replace(/\//g, '-'));
219
+ }
220
+ async loadSources() {
221
+ return this.loadSourcesFrom(this.sourcesFile);
222
+ }
223
+ async loadSourcesFrom(file) {
224
+ const result = await (0, result_1.run)(() => fs.readFile(file, 'utf-8'));
225
+ if (!(0, result_1.isOk)(result))
226
+ return [];
227
+ try {
228
+ const parsed = JSON.parse(result.value);
229
+ return Array.isArray(parsed) ? parsed : [];
230
+ }
231
+ catch {
232
+ return [];
233
+ }
234
+ }
235
+ async upsertSource(entry) {
236
+ return this.upsertSourceTo(this.sourcesFile, entry);
237
+ }
238
+ async upsertSourceTo(file, entry) {
239
+ const sources = await this.loadSourcesFrom(file);
240
+ const idx = sources.findIndex(s => s.pack === entry.pack);
241
+ if (idx >= 0)
242
+ sources[idx] = entry;
243
+ else
244
+ sources.push(entry);
245
+ await fs.mkdir(path.dirname(file), { recursive: true });
246
+ await (0, atomic_write_1.atomicWrite)(file, JSON.stringify(sources, null, 2));
247
+ }
248
+ async removeSource(packName) {
249
+ const sources = await this.loadSources();
250
+ const filtered = sources.filter(s => s.pack !== packName);
251
+ await (0, atomic_write_1.atomicWrite)(this.sourcesFile, JSON.stringify(filtered, null, 2));
252
+ }
253
+ }
254
+ exports.SkillManager = SkillManager;
255
+ /**
256
+ * Standard factory for SkillManager.
257
+ * Use this instead of `new SkillManager()` in agent implementations.
258
+ *
259
+ * - Reads TrustConfig from env vars so security is configured at the host level:
260
+ * BK_TRUSTED_SOURCES — comma-separated source prefixes (open mode if unset)
261
+ * BK_MAX_PROMPT_BYTES — max bytes for systemPromptAddition (default: 20 000)
262
+ *
263
+ * - ObsidianProvider is NOT registered by default — call `.use(new ObsidianProvider())`
264
+ * when the agent needs vault access (it requires a user-specific vault path).
265
+ *
266
+ * @example
267
+ * // Basic — open mode, all built-in sources
268
+ * const manager = createSkillManager('my-app');
269
+ *
270
+ * // With allowlist
271
+ * const manager = createSkillManager('my-app', {
272
+ * allowedSources: ['https://github.com/my-org/', 'https://skills.sh/'],
273
+ * });
274
+ *
275
+ * // With Obsidian support
276
+ * const manager = createSkillManager('my-app').use(new ObsidianProvider());
277
+ */
278
+ function createSkillManager(appName, trust) {
279
+ const resolvedTrust = { ...trust };
280
+ if (!resolvedTrust.allowedSources) {
281
+ const env = process.env.BK_TRUSTED_SOURCES;
282
+ if (env) {
283
+ resolvedTrust.allowedSources = env.split(',').map(s => s.trim()).filter(Boolean);
284
+ }
285
+ }
286
+ if (!resolvedTrust.maxPromptBytes) {
287
+ const env = process.env.BK_MAX_PROMPT_BYTES;
288
+ if (env) {
289
+ const parsed = parseInt(env, 10);
290
+ if (!isNaN(parsed))
291
+ resolvedTrust.maxPromptBytes = parsed;
292
+ }
293
+ }
294
+ return new SkillManager(appName, resolvedTrust);
295
+ }
296
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/skills/manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuSA,gDAmBC;AA1TD,gDAAkC;AAClC,2CAA6B;AAC7B,oDAAoD;AACpD,6DAA8D;AAC9D,+DAA2D;AAC3D,qDAA6C;AAC7C,+CAAoD;AACpD,6CAAkD;AAClD,qDAAyD;AA0BzD,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC;;;;;;;;;;;;;;;GAeG;AACH,MAAa,YAAY;IAMQ;IALZ,QAAQ,CAAS;IACjB,WAAW,CAAS;IACpB,SAAS,CAAwB;IACjC,KAAK,CAAc;IAEpC,YAA6B,OAAe,EAAE,QAAqB,EAAE;QAAxC,YAAO,GAAP,OAAO,CAAQ;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,6BAAe,EAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG;YACb,IAAI,uBAAc,CAAC,OAAO,CAAC;YAC3B,IAAI,4BAAgB,CAAC,OAAO,CAAC;YAC7B,IAAI,qBAAa,EAAE;SACtB,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,QAA6B;QAC7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,UAA0B,EAAE;QACtD,sDAAsD;QACtD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE7D,yDAAyD;QACzD,gEAAgE;QAChE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAC/B,MAAM,UAAU,GAAG,UAAU;YACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACjB,yEAAyE;YACzE,MAAM,eAAe,GAAG,UAAU;gBAC9B,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;gBAC7E,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACxE,IAAI,gBAAgB,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CACX,SAAS,QAAQ,sEAAsE,CAC1F,CAAC;YACN,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACX,kCAAkC,MAAM,MAAM;gBAC9C,0FAA0F;gBAC1F,+DAA+D,CAClE,CAAC;QACN,CAAC;QAED,wEAAwE;QACxE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACX,6BAA6B,MAAM,GAAG;gBACtC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CACpE,CAAC;QACN,CAAC;QAED,0DAA0D;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE1C,6DAA6D;QAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,CAAC,GAAG,CACb,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;YAC3D,OAAO,IAAA,0BAAW,EAAC,QAAQ,EAAE,IAAA,0BAAS,EAAC,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,KAAK,GAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACjG,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,IAAA,YAAG,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,IAAA,aAAI,EAAC,MAAM,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACpB,MAAM,WAAW,GAAG,MAAM,IAAA,YAAG,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,IAAA,aAAI,EAAC,WAAW,CAAC;gBAC5B,CAAC,CAAC,WAAW,CAAC,KAAK;qBACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACpC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAC7C,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,0CAA0C,CAAC,CAAC;QACzF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,8EAA8E;IAC9E,WAAW;IACX,8EAA8E;IAE9E;;;OAGG;IACK,aAAa,CAAC,MAAc;QAChC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,cAAc;YAAE,OAAO,CAAC,YAAY;QAEzC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACX,WAAW,MAAM,sCAAsC;gBACvD,qBAAqB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAClD,gEAAgE,CACnE,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,QAAQ,CAAC,MAAe,EAAE,MAAc;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACvE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,oBAAoB;gBAAE,SAAS;YAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YACrE,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CACX,UAAU,KAAK,CAAC,IAAI,WAAW,MAAM,sCAAsC;oBAC3E,OAAO,KAAK,oBAAoB,QAAQ,WAAW;oBACnD,2EAA2E,CAC9E,CAAC;YACN,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,8EAA8E;IAC9E,UAAU;IACV,8EAA8E;IAEtE,cAAc,CAAC,MAAc;QACjC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACrE,IAAI,WAAW;YAAE,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACxE,IAAI,aAAa;YAAE,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,OAAO,YAAY,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,OAAO,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,WAAW;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAY;QACtC,MAAM,MAAM,GAAG,MAAM,IAAA,YAAG,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAA,aAAI,EAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAsB,CAAC;YAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAsB;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,KAAsB;QAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;YAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,IAAA,0BAAW,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAAgB;QACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC1D,MAAM,IAAA,0BAAW,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;CACJ;AA1ND,oCA0NC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,kBAAkB,CAAC,OAAe,EAAE,KAAmB;IACnE,MAAM,aAAa,GAAgB,EAAE,GAAG,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC3C,IAAI,GAAG,EAAE,CAAC;YACN,aAAa,CAAC,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrF,CAAC;IACL,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC5C,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,aAAa,CAAC,cAAc,GAAG,MAAM,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Skill } from './types';
2
+ /**
3
+ * Parses a .md file with YAML frontmatter into a Skill.
4
+ * The markdown body becomes systemPromptAddition (unless already set in frontmatter).
5
+ * Returns null if frontmatter is missing or invalid.
6
+ */
7
+ export declare function parseMdSkill(content: string): Skill | null;
8
+ /**
9
+ * Serializes a Skill to .md format.
10
+ * scope and pack are excluded from frontmatter — they are set by the loader
11
+ * based on where the file lives, not stored in the file itself.
12
+ */
13
+ export declare function skillToMd(skill: Skill): string;
14
+ //# sourceMappingURL=parse-md-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-md-skill.d.ts","sourceRoot":"","sources":["../../src/skills/parse-md-skill.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CA6B1D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAQ9C"}
@@ -0,0 +1,86 @@
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.parseMdSkill = parseMdSkill;
37
+ exports.skillToMd = skillToMd;
38
+ const yaml = __importStar(require("yaml"));
39
+ const FRONTMATTER_RE = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
40
+ /**
41
+ * Parses a .md file with YAML frontmatter into a Skill.
42
+ * The markdown body becomes systemPromptAddition (unless already set in frontmatter).
43
+ * Returns null if frontmatter is missing or invalid.
44
+ */
45
+ function parseMdSkill(content) {
46
+ const match = content.match(FRONTMATTER_RE);
47
+ if (!match)
48
+ return null;
49
+ const [, frontmatter, body] = match;
50
+ let parsed;
51
+ try {
52
+ parsed = yaml.parse(frontmatter);
53
+ }
54
+ catch {
55
+ return null;
56
+ }
57
+ if (!parsed || typeof parsed.name !== 'string' || !parsed.name)
58
+ return null;
59
+ const skill = {
60
+ ...parsed,
61
+ name: parsed.name,
62
+ version: typeof parsed.version === 'string' ? parsed.version : '1.0.0',
63
+ description: typeof parsed.description === 'string' ? parsed.description : '',
64
+ triggers: Array.isArray(parsed.triggers) ? parsed.triggers : [],
65
+ };
66
+ const bodyText = body.trim();
67
+ if (bodyText && !skill.systemPromptAddition) {
68
+ skill.systemPromptAddition = bodyText;
69
+ }
70
+ return skill;
71
+ }
72
+ /**
73
+ * Serializes a Skill to .md format.
74
+ * scope and pack are excluded from frontmatter — they are set by the loader
75
+ * based on where the file lives, not stored in the file itself.
76
+ */
77
+ function skillToMd(skill) {
78
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
79
+ const { systemPromptAddition, scope, pack, ...frontmatterFields } = skill;
80
+ const frontmatter = yaml.stringify(frontmatterFields).trimEnd();
81
+ const body = systemPromptAddition?.trim() ?? '';
82
+ return body
83
+ ? `---\n${frontmatter}\n---\n\n${body}\n`
84
+ : `---\n${frontmatter}\n---\n`;
85
+ }
86
+ //# sourceMappingURL=parse-md-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-md-skill.js","sourceRoot":"","sources":["../../src/skills/parse-md-skill.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,oCA6BC;AAOD,8BAQC;AAtDD,2CAA6B;AAG7B,MAAM,cAAc,GAAG,6CAA6C,CAAC;AAErE;;;;GAIG;AACH,SAAgB,YAAY,CAAC,OAAe;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IAEpC,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAA4B,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAE5E,MAAM,KAAK,GAAU;QACjB,GAAI,MAAyB;QAC7B,IAAI,EAAE,MAAM,CAAC,IAAc;QAC3B,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QACtE,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QAC7E,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,QAAqB,CAAC,CAAC,CAAC,EAAE;KAChF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC1C,KAAK,CAAC,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,KAAY;IAClC,6DAA6D;IAC7D,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChD,OAAO,IAAI;QACP,CAAC,CAAC,QAAQ,WAAW,YAAY,IAAI,IAAI;QACzC,CAAC,CAAC,QAAQ,WAAW,SAAS,CAAC;AACvC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Skill } from '../types';
2
+ import type { FetchOptions, SkillSourceProvider } from './types';
3
+ /**
4
+ * Fetches skill packs from GitHub repositories.
5
+ * Looks for skill files in a /skills subfolder first, then the repo root.
6
+ * Supports both .yaml/.yml and .md (with frontmatter) skill files.
7
+ *
8
+ * Accepted source formats:
9
+ * https://github.com/{owner}/{repo}
10
+ * https://github.com/{owner}/{repo}.git
11
+ */
12
+ export declare class GitHubProvider implements SkillSourceProvider {
13
+ private readonly appName;
14
+ readonly id = "github";
15
+ constructor(appName?: string);
16
+ canHandle(source: string): boolean;
17
+ fetch(source: string, options?: FetchOptions): Promise<Skill[]>;
18
+ private listSkillFiles;
19
+ private downloadAndParse;
20
+ }
21
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/skills/providers/github.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAUjE;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,mBAAmB;IAG1C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,EAAE,YAAY;gBAEM,OAAO,GAAE,MAAgB;IAEtD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAgBvD,cAAc;YA2Bd,gBAAgB;CAoCjC"}