@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.
- package/dist/agent-discovery/AgentPackageLoader.d.ts +14 -0
- package/dist/agent-discovery/AgentPackageLoader.d.ts.map +1 -0
- package/dist/agent-discovery/AgentPackageLoader.js +78 -0
- package/dist/agent-discovery/AgentPackageLoader.js.map +1 -0
- package/dist/agent-discovery/RemoteAgentRegistry.d.ts +31 -0
- package/dist/agent-discovery/RemoteAgentRegistry.d.ts.map +1 -0
- package/dist/agent-discovery/RemoteAgentRegistry.js +103 -0
- package/dist/agent-discovery/RemoteAgentRegistry.js.map +1 -0
- package/dist/agent-discovery/discoverAgents.d.ts +18 -0
- package/dist/agent-discovery/discoverAgents.d.ts.map +1 -0
- package/dist/agent-discovery/discoverAgents.js +59 -0
- package/dist/agent-discovery/discoverAgents.js.map +1 -0
- package/dist/agent-discovery/index.d.ts +5 -0
- package/dist/agent-discovery/index.d.ts.map +1 -0
- package/dist/agent-discovery/index.js +12 -0
- package/dist/agent-discovery/index.js.map +1 -0
- package/dist/agent-discovery/types.d.ts +42 -0
- package/dist/agent-discovery/types.d.ts.map +1 -0
- package/dist/agent-discovery/types.js +3 -0
- package/dist/agent-discovery/types.js.map +1 -0
- package/dist/agent-memory/EpisodicMemory.d.ts +26 -0
- package/dist/agent-memory/EpisodicMemory.d.ts.map +1 -0
- package/dist/agent-memory/EpisodicMemory.js +83 -0
- package/dist/agent-memory/EpisodicMemory.js.map +1 -0
- package/dist/agent-memory/MemorySystem.d.ts +40 -0
- package/dist/agent-memory/MemorySystem.d.ts.map +1 -0
- package/dist/agent-memory/MemorySystem.js +75 -0
- package/dist/agent-memory/MemorySystem.js.map +1 -0
- package/dist/agent-memory/ProceduralMemory.d.ts +26 -0
- package/dist/agent-memory/ProceduralMemory.d.ts.map +1 -0
- package/dist/agent-memory/ProceduralMemory.js +104 -0
- package/dist/agent-memory/ProceduralMemory.js.map +1 -0
- package/dist/agent-memory/SemanticMemory.d.ts +21 -0
- package/dist/agent-memory/SemanticMemory.d.ts.map +1 -0
- package/dist/agent-memory/SemanticMemory.js +68 -0
- package/dist/agent-memory/SemanticMemory.js.map +1 -0
- package/dist/agent-memory/index.d.ts +9 -0
- package/dist/agent-memory/index.d.ts.map +1 -0
- package/dist/agent-memory/index.js +19 -0
- package/dist/agent-memory/index.js.map +1 -0
- package/dist/agent-memory/scoring.d.ts +10 -0
- package/dist/agent-memory/scoring.d.ts.map +1 -0
- package/dist/agent-memory/scoring.js +32 -0
- package/dist/agent-memory/scoring.js.map +1 -0
- package/dist/agent-memory/stores/InMemoryStore.d.ts +10 -0
- package/dist/agent-memory/stores/InMemoryStore.d.ts.map +1 -0
- package/dist/agent-memory/stores/InMemoryStore.js +25 -0
- package/dist/agent-memory/stores/InMemoryStore.js.map +1 -0
- package/dist/agent-memory/stores/JsonFileStore.d.ts +18 -0
- package/dist/agent-memory/stores/JsonFileStore.d.ts.map +1 -0
- package/dist/agent-memory/stores/JsonFileStore.js +61 -0
- package/dist/agent-memory/stores/JsonFileStore.js.map +1 -0
- package/dist/agent-memory/tools.d.ts +6 -0
- package/dist/agent-memory/tools.d.ts.map +1 -0
- package/dist/agent-memory/tools.js +74 -0
- package/dist/agent-memory/tools.js.map +1 -0
- package/dist/agent-memory/types.d.ts +75 -0
- package/dist/agent-memory/types.d.ts.map +1 -0
- package/dist/agent-memory/types.js +4 -0
- package/dist/agent-memory/types.js.map +1 -0
- package/dist/bootstrap/GlobalSeed.d.ts +46 -0
- package/dist/bootstrap/GlobalSeed.d.ts.map +1 -0
- package/dist/bootstrap/GlobalSeed.js +285 -0
- package/dist/bootstrap/GlobalSeed.js.map +1 -0
- package/dist/bootstrap/config.d.ts +24 -0
- package/dist/bootstrap/config.d.ts.map +1 -0
- package/dist/bootstrap/config.js +71 -0
- package/dist/bootstrap/config.js.map +1 -0
- package/dist/checkpoint/index.d.ts +17 -0
- package/dist/checkpoint/index.d.ts.map +1 -0
- package/dist/checkpoint/index.js +207 -0
- package/dist/checkpoint/index.js.map +1 -0
- package/dist/commands/SlashCommandRegistry.d.ts +98 -0
- package/dist/commands/SlashCommandRegistry.d.ts.map +1 -0
- package/dist/commands/SlashCommandRegistry.js +41 -0
- package/dist/commands/SlashCommandRegistry.js.map +1 -0
- package/dist/commands/builtin.d.ts +7 -0
- package/dist/commands/builtin.d.ts.map +1 -0
- package/dist/commands/builtin.js +694 -0
- package/dist/commands/builtin.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +8 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/context/index.d.ts +8 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +8 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/pipeline.d.ts +46 -0
- package/dist/context/pipeline.d.ts.map +1 -0
- package/dist/context/pipeline.js +111 -0
- package/dist/context/pipeline.js.map +1 -0
- package/dist/context/stages/stage-instructions.d.ts +12 -0
- package/dist/context/stages/stage-instructions.d.ts.map +1 -0
- package/dist/context/stages/stage-instructions.js +76 -0
- package/dist/context/stages/stage-instructions.js.map +1 -0
- package/dist/context/stages/stage-lessons.d.ts +13 -0
- package/dist/context/stages/stage-lessons.d.ts.map +1 -0
- package/dist/context/stages/stage-lessons.js +83 -0
- package/dist/context/stages/stage-lessons.js.map +1 -0
- package/dist/context/stages/stage-manifest.d.ts +11 -0
- package/dist/context/stages/stage-manifest.d.ts.map +1 -0
- package/dist/context/stages/stage-manifest.js +62 -0
- package/dist/context/stages/stage-manifest.js.map +1 -0
- package/dist/context/stages/stage-project.d.ts +10 -0
- package/dist/context/stages/stage-project.d.ts.map +1 -0
- package/dist/context/stages/stage-project.js +55 -0
- package/dist/context/stages/stage-project.js.map +1 -0
- package/dist/context/stages/stage-session.d.ts +12 -0
- package/dist/context/stages/stage-session.d.ts.map +1 -0
- package/dist/context/stages/stage-session.js +69 -0
- package/dist/context/stages/stage-session.js.map +1 -0
- package/dist/delegation/DelegationBus.d.ts +40 -0
- package/dist/delegation/DelegationBus.d.ts.map +1 -0
- package/dist/delegation/DelegationBus.js +68 -0
- package/dist/delegation/DelegationBus.js.map +1 -0
- package/dist/engine/AgentEngine.d.ts +212 -0
- package/dist/engine/AgentEngine.d.ts.map +1 -0
- package/dist/engine/AgentEngine.js +1037 -0
- package/dist/engine/AgentEngine.js.map +1 -0
- package/dist/engine/AgentRegistry.d.ts +13 -0
- package/dist/engine/AgentRegistry.d.ts.map +1 -0
- package/dist/engine/AgentRegistry.js +37 -0
- package/dist/engine/AgentRegistry.js.map +1 -0
- package/dist/engine/IterationManager.d.ts +79 -0
- package/dist/engine/IterationManager.d.ts.map +1 -0
- package/dist/engine/IterationManager.js +103 -0
- package/dist/engine/IterationManager.js.map +1 -0
- package/dist/engine/ProviderRegistry.d.ts +10 -0
- package/dist/engine/ProviderRegistry.d.ts.map +1 -0
- package/dist/engine/ProviderRegistry.js +28 -0
- package/dist/engine/ProviderRegistry.js.map +1 -0
- package/dist/engine/ToolRegistry.d.ts +54 -0
- package/dist/engine/ToolRegistry.d.ts.map +1 -0
- package/dist/engine/ToolRegistry.js +75 -0
- package/dist/engine/ToolRegistry.js.map +1 -0
- package/dist/engine/createBaseEngine.d.ts +169 -0
- package/dist/engine/createBaseEngine.d.ts.map +1 -0
- package/dist/engine/createBaseEngine.js +91 -0
- package/dist/engine/createBaseEngine.js.map +1 -0
- package/dist/engine/qa-orchestrator.d.ts +56 -0
- package/dist/engine/qa-orchestrator.d.ts.map +1 -0
- package/dist/engine/qa-orchestrator.js +163 -0
- package/dist/engine/qa-orchestrator.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +163 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/MCPClientManager.d.ts +65 -0
- package/dist/mcp/MCPClientManager.d.ts.map +1 -0
- package/dist/mcp/MCPClientManager.js +211 -0
- package/dist/mcp/MCPClientManager.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/types.d.ts +121 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +3 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/memory/SessionMemory.d.ts +9 -0
- package/dist/memory/SessionMemory.d.ts.map +1 -0
- package/dist/memory/SessionMemory.js +20 -0
- package/dist/memory/SessionMemory.js.map +1 -0
- package/dist/observability/CostTracker.d.ts +19 -0
- package/dist/observability/CostTracker.d.ts.map +1 -0
- package/dist/observability/CostTracker.js +64 -0
- package/dist/observability/CostTracker.js.map +1 -0
- package/dist/observability/MetricsCollector.d.ts +17 -0
- package/dist/observability/MetricsCollector.d.ts.map +1 -0
- package/dist/observability/MetricsCollector.js +70 -0
- package/dist/observability/MetricsCollector.js.map +1 -0
- package/dist/observability/ObservabilityManager.d.ts +33 -0
- package/dist/observability/ObservabilityManager.d.ts.map +1 -0
- package/dist/observability/ObservabilityManager.js +107 -0
- package/dist/observability/ObservabilityManager.js.map +1 -0
- package/dist/observability/Tracer.d.ts +23 -0
- package/dist/observability/Tracer.d.ts.map +1 -0
- package/dist/observability/Tracer.js +65 -0
- package/dist/observability/Tracer.js.map +1 -0
- package/dist/observability/index.d.ts +7 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +14 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/types.d.ts +77 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +15 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/orchestration/audit/audit-ci-blocker.d.ts +31 -0
- package/dist/orchestration/audit/audit-ci-blocker.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-ci-blocker.js +120 -0
- package/dist/orchestration/audit/audit-ci-blocker.js.map +1 -0
- package/dist/orchestration/audit/audit-finding-tracer.d.ts +33 -0
- package/dist/orchestration/audit/audit-finding-tracer.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-finding-tracer.js +126 -0
- package/dist/orchestration/audit/audit-finding-tracer.js.map +1 -0
- package/dist/orchestration/audit/audit-lessons-learned.d.ts +27 -0
- package/dist/orchestration/audit/audit-lessons-learned.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-lessons-learned.js +155 -0
- package/dist/orchestration/audit/audit-lessons-learned.js.map +1 -0
- package/dist/orchestration/audit/audit-pending-issues.d.ts +21 -0
- package/dist/orchestration/audit/audit-pending-issues.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-pending-issues.js +110 -0
- package/dist/orchestration/audit/audit-pending-issues.js.map +1 -0
- package/dist/orchestration/audit/audit-reflection-bridge.d.ts +39 -0
- package/dist/orchestration/audit/audit-reflection-bridge.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-reflection-bridge.js +65 -0
- package/dist/orchestration/audit/audit-reflection-bridge.js.map +1 -0
- package/dist/orchestration/audit/audit-report-renderer.d.ts +30 -0
- package/dist/orchestration/audit/audit-report-renderer.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-report-renderer.js +249 -0
- package/dist/orchestration/audit/audit-report-renderer.js.map +1 -0
- package/dist/orchestration/audit/audit-report-version-manager.d.ts +52 -0
- package/dist/orchestration/audit/audit-report-version-manager.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-report-version-manager.js +144 -0
- package/dist/orchestration/audit/audit-report-version-manager.js.map +1 -0
- package/dist/orchestration/audit/audit-silent-gates-buffer.d.ts +37 -0
- package/dist/orchestration/audit/audit-silent-gates-buffer.d.ts.map +1 -0
- package/dist/orchestration/audit/audit-silent-gates-buffer.js +129 -0
- package/dist/orchestration/audit/audit-silent-gates-buffer.js.map +1 -0
- package/dist/orchestration/audit/index.d.ts +17 -0
- package/dist/orchestration/audit/index.d.ts.map +1 -0
- package/dist/orchestration/audit/index.js +26 -0
- package/dist/orchestration/audit/index.js.map +1 -0
- package/dist/orchestration/audit/types.d.ts +79 -0
- package/dist/orchestration/audit/types.d.ts.map +1 -0
- package/dist/orchestration/audit/types.js +10 -0
- package/dist/orchestration/audit/types.js.map +1 -0
- package/dist/orchestration/audit-reporter.d.ts +133 -0
- package/dist/orchestration/audit-reporter.d.ts.map +1 -0
- package/dist/orchestration/audit-reporter.js +322 -0
- package/dist/orchestration/audit-reporter.js.map +1 -0
- package/dist/orchestration/config-loader.d.ts +51 -0
- package/dist/orchestration/config-loader.d.ts.map +1 -0
- package/dist/orchestration/config-loader.js +215 -0
- package/dist/orchestration/config-loader.js.map +1 -0
- package/dist/orchestration/domain-detector.d.ts +36 -0
- package/dist/orchestration/domain-detector.d.ts.map +1 -0
- package/dist/orchestration/domain-detector.js +157 -0
- package/dist/orchestration/domain-detector.js.map +1 -0
- package/dist/orchestration/fsm.d.ts +86 -0
- package/dist/orchestration/fsm.d.ts.map +1 -0
- package/dist/orchestration/fsm.js +223 -0
- package/dist/orchestration/fsm.js.map +1 -0
- package/dist/orchestration/gate-resolver.d.ts +42 -0
- package/dist/orchestration/gate-resolver.d.ts.map +1 -0
- package/dist/orchestration/gate-resolver.js +94 -0
- package/dist/orchestration/gate-resolver.js.map +1 -0
- package/dist/orchestration/index.d.ts +15 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +32 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/intent-detector.d.ts +43 -0
- package/dist/orchestration/intent-detector.d.ts.map +1 -0
- package/dist/orchestration/intent-detector.js +249 -0
- package/dist/orchestration/intent-detector.js.map +1 -0
- package/dist/orchestration/keyword-match.d.ts +17 -0
- package/dist/orchestration/keyword-match.d.ts.map +1 -0
- package/dist/orchestration/keyword-match.js +26 -0
- package/dist/orchestration/keyword-match.js.map +1 -0
- package/dist/orchestration/llm-client-adapter.d.ts +11 -0
- package/dist/orchestration/llm-client-adapter.d.ts.map +1 -0
- package/dist/orchestration/llm-client-adapter.js +30 -0
- package/dist/orchestration/llm-client-adapter.js.map +1 -0
- package/dist/orchestration/orchestrator.d.ts +153 -0
- package/dist/orchestration/orchestrator.d.ts.map +1 -0
- package/dist/orchestration/orchestrator.js +471 -0
- package/dist/orchestration/orchestrator.js.map +1 -0
- package/dist/orchestration/policy-engine.d.ts +47 -0
- package/dist/orchestration/policy-engine.d.ts.map +1 -0
- package/dist/orchestration/policy-engine.js +262 -0
- package/dist/orchestration/policy-engine.js.map +1 -0
- package/dist/orchestration/risk-scorer.d.ts +38 -0
- package/dist/orchestration/risk-scorer.d.ts.map +1 -0
- package/dist/orchestration/risk-scorer.js +145 -0
- package/dist/orchestration/risk-scorer.js.map +1 -0
- package/dist/orchestration/task-context.d.ts +195 -0
- package/dist/orchestration/task-context.d.ts.map +1 -0
- package/dist/orchestration/task-context.js +160 -0
- package/dist/orchestration/task-context.js.map +1 -0
- package/dist/orchestration/types.d.ts +111 -0
- package/dist/orchestration/types.d.ts.map +1 -0
- package/dist/orchestration/types.js +37 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/qa/index.d.ts +3 -0
- package/dist/qa/index.d.ts.map +1 -0
- package/dist/qa/index.js +6 -0
- package/dist/qa/index.js.map +1 -0
- package/dist/qa/qa-service.d.ts +30 -0
- package/dist/qa/qa-service.d.ts.map +1 -0
- package/dist/qa/qa-service.js +200 -0
- package/dist/qa/qa-service.js.map +1 -0
- package/dist/reflection/commands/domain-commands.d.ts +78 -0
- package/dist/reflection/commands/domain-commands.d.ts.map +1 -0
- package/dist/reflection/commands/domain-commands.js +203 -0
- package/dist/reflection/commands/domain-commands.js.map +1 -0
- package/dist/reflection/domain-registry.d.ts +104 -0
- package/dist/reflection/domain-registry.d.ts.map +1 -0
- package/dist/reflection/domain-registry.js +279 -0
- package/dist/reflection/domain-registry.js.map +1 -0
- package/dist/reflection/domains/agent-domain.d.ts +40 -0
- package/dist/reflection/domains/agent-domain.d.ts.map +1 -0
- package/dist/reflection/domains/agent-domain.js +161 -0
- package/dist/reflection/domains/agent-domain.js.map +1 -0
- package/dist/reflection/domains/audit-domain.d.ts +46 -0
- package/dist/reflection/domains/audit-domain.d.ts.map +1 -0
- package/dist/reflection/domains/audit-domain.js +241 -0
- package/dist/reflection/domains/audit-domain.js.map +1 -0
- package/dist/reflection/domains/bootstrap-domain.d.ts +40 -0
- package/dist/reflection/domains/bootstrap-domain.d.ts.map +1 -0
- package/dist/reflection/domains/bootstrap-domain.js +156 -0
- package/dist/reflection/domains/bootstrap-domain.js.map +1 -0
- package/dist/reflection/domains/commit-domain.d.ts +40 -0
- package/dist/reflection/domains/commit-domain.d.ts.map +1 -0
- package/dist/reflection/domains/commit-domain.js +174 -0
- package/dist/reflection/domains/commit-domain.js.map +1 -0
- package/dist/reflection/domains/test-domain.d.ts +40 -0
- package/dist/reflection/domains/test-domain.d.ts.map +1 -0
- package/dist/reflection/domains/test-domain.js +194 -0
- package/dist/reflection/domains/test-domain.js.map +1 -0
- package/dist/reflection/failure-catalog.d.ts +100 -0
- package/dist/reflection/failure-catalog.d.ts.map +1 -0
- package/dist/reflection/failure-catalog.js +269 -0
- package/dist/reflection/failure-catalog.js.map +1 -0
- package/dist/reflection/historical-loader.d.ts +105 -0
- package/dist/reflection/historical-loader.d.ts.map +1 -0
- package/dist/reflection/historical-loader.js +462 -0
- package/dist/reflection/historical-loader.js.map +1 -0
- package/dist/reflection/hooks/agent-hook.d.ts +72 -0
- package/dist/reflection/hooks/agent-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/agent-hook.js +98 -0
- package/dist/reflection/hooks/agent-hook.js.map +1 -0
- package/dist/reflection/hooks/audit-hook.d.ts +72 -0
- package/dist/reflection/hooks/audit-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/audit-hook.js +112 -0
- package/dist/reflection/hooks/audit-hook.js.map +1 -0
- package/dist/reflection/hooks/bootstrap-hook.d.ts +71 -0
- package/dist/reflection/hooks/bootstrap-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/bootstrap-hook.js +97 -0
- package/dist/reflection/hooks/bootstrap-hook.js.map +1 -0
- package/dist/reflection/hooks/commit-hook.d.ts +63 -0
- package/dist/reflection/hooks/commit-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/commit-hook.js +90 -0
- package/dist/reflection/hooks/commit-hook.js.map +1 -0
- package/dist/reflection/hooks/test-hook.d.ts +65 -0
- package/dist/reflection/hooks/test-hook.d.ts.map +1 -0
- package/dist/reflection/hooks/test-hook.js +99 -0
- package/dist/reflection/hooks/test-hook.js.map +1 -0
- package/dist/reflection/index.d.ts +19 -0
- package/dist/reflection/index.d.ts.map +1 -0
- package/dist/reflection/index.js +40 -0
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/lessons-memo-generator.d.ts +60 -0
- package/dist/reflection/lessons-memo-generator.d.ts.map +1 -0
- package/dist/reflection/lessons-memo-generator.js +286 -0
- package/dist/reflection/lessons-memo-generator.js.map +1 -0
- package/dist/reflection/pattern-detector.d.ts +55 -0
- package/dist/reflection/pattern-detector.d.ts.map +1 -0
- package/dist/reflection/pattern-detector.js +137 -0
- package/dist/reflection/pattern-detector.js.map +1 -0
- package/dist/reflection/policy-promoter.d.ts +86 -0
- package/dist/reflection/policy-promoter.d.ts.map +1 -0
- package/dist/reflection/policy-promoter.js +382 -0
- package/dist/reflection/policy-promoter.js.map +1 -0
- package/dist/reflection/reflection-engine.d.ts +160 -0
- package/dist/reflection/reflection-engine.d.ts.map +1 -0
- package/dist/reflection/reflection-engine.js +352 -0
- package/dist/reflection/reflection-engine.js.map +1 -0
- package/dist/reflection/types.d.ts +106 -0
- package/dist/reflection/types.d.ts.map +1 -0
- package/dist/reflection/types.js +64 -0
- package/dist/reflection/types.js.map +1 -0
- package/dist/shared/llm/resilient-client.d.ts +40 -0
- package/dist/shared/llm/resilient-client.d.ts.map +1 -0
- package/dist/shared/llm/resilient-client.js +60 -0
- package/dist/shared/llm/resilient-client.js.map +1 -0
- package/dist/shared/utils/atomic-write.d.ts +7 -0
- package/dist/shared/utils/atomic-write.d.ts.map +1 -0
- package/dist/shared/utils/atomic-write.js +52 -0
- package/dist/shared/utils/atomic-write.js.map +1 -0
- package/dist/shared/utils/git.d.ts +2 -0
- package/dist/shared/utils/git.d.ts.map +1 -0
- package/dist/shared/utils/git.js +17 -0
- package/dist/shared/utils/git.js.map +1 -0
- package/dist/shared/utils/project-key.d.ts +4 -0
- package/dist/shared/utils/project-key.d.ts.map +1 -0
- package/dist/shared/utils/project-key.js +54 -0
- package/dist/shared/utils/project-key.js.map +1 -0
- package/dist/shared/utils/string-utils.d.ts +17 -0
- package/dist/shared/utils/string-utils.d.ts.map +1 -0
- package/dist/shared/utils/string-utils.js +37 -0
- package/dist/shared/utils/string-utils.js.map +1 -0
- package/dist/skills/activator.d.ts +27 -0
- package/dist/skills/activator.d.ts.map +1 -0
- package/dist/skills/activator.js +127 -0
- package/dist/skills/activator.js.map +1 -0
- package/dist/skills/builtins/global.d.ts +7 -0
- package/dist/skills/builtins/global.d.ts.map +1 -0
- package/dist/skills/builtins/global.js +208 -0
- package/dist/skills/builtins/global.js.map +1 -0
- package/dist/skills/builtins/go-pack.d.ts +7 -0
- package/dist/skills/builtins/go-pack.d.ts.map +1 -0
- package/dist/skills/builtins/go-pack.js +263 -0
- package/dist/skills/builtins/go-pack.js.map +1 -0
- package/dist/skills/builtins/java-pack.d.ts +7 -0
- package/dist/skills/builtins/java-pack.d.ts.map +1 -0
- package/dist/skills/builtins/java-pack.js +272 -0
- package/dist/skills/builtins/java-pack.js.map +1 -0
- package/dist/skills/builtins/kotlin-pack.d.ts +9 -0
- package/dist/skills/builtins/kotlin-pack.d.ts.map +1 -0
- package/dist/skills/builtins/kotlin-pack.js +292 -0
- package/dist/skills/builtins/kotlin-pack.js.map +1 -0
- package/dist/skills/builtins/node-pack.d.ts +7 -0
- package/dist/skills/builtins/node-pack.d.ts.map +1 -0
- package/dist/skills/builtins/node-pack.js +750 -0
- package/dist/skills/builtins/node-pack.js.map +1 -0
- package/dist/skills/builtins/python-pack.d.ts +7 -0
- package/dist/skills/builtins/python-pack.d.ts.map +1 -0
- package/dist/skills/builtins/python-pack.js +303 -0
- package/dist/skills/builtins/python-pack.js.map +1 -0
- package/dist/skills/index.d.ts +11 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +24 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +39 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +152 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/manager.d.ts +97 -0
- package/dist/skills/manager.d.ts.map +1 -0
- package/dist/skills/manager.js +296 -0
- package/dist/skills/manager.js.map +1 -0
- package/dist/skills/parse-md-skill.d.ts +14 -0
- package/dist/skills/parse-md-skill.d.ts.map +1 -0
- package/dist/skills/parse-md-skill.js +86 -0
- package/dist/skills/parse-md-skill.js.map +1 -0
- package/dist/skills/providers/github.d.ts +21 -0
- package/dist/skills/providers/github.d.ts.map +1 -0
- package/dist/skills/providers/github.js +146 -0
- package/dist/skills/providers/github.js.map +1 -0
- package/dist/skills/providers/index.d.ts +6 -0
- package/dist/skills/providers/index.d.ts.map +1 -0
- package/dist/skills/providers/index.js +12 -0
- package/dist/skills/providers/index.js.map +1 -0
- package/dist/skills/providers/local.d.ts +16 -0
- package/dist/skills/providers/local.d.ts.map +1 -0
- package/dist/skills/providers/local.js +91 -0
- package/dist/skills/providers/local.js.map +1 -0
- package/dist/skills/providers/obsidian.d.ts +31 -0
- package/dist/skills/providers/obsidian.d.ts.map +1 -0
- package/dist/skills/providers/obsidian.js +141 -0
- package/dist/skills/providers/obsidian.js.map +1 -0
- package/dist/skills/providers/skills-sh.d.ts +32 -0
- package/dist/skills/providers/skills-sh.d.ts.map +1 -0
- package/dist/skills/providers/skills-sh.js +53 -0
- package/dist/skills/providers/skills-sh.js.map +1 -0
- package/dist/skills/providers/types.d.ts +25 -0
- package/dist/skills/providers/types.d.ts.map +1 -0
- package/dist/skills/providers/types.js +3 -0
- package/dist/skills/providers/types.js.map +1 -0
- package/dist/skills/registry.d.ts +18 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +45 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/types.d.ts +66 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +3 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tools/defineTool.d.ts +34 -0
- package/dist/tools/defineTool.d.ts.map +1 -0
- package/dist/tools/defineTool.js +63 -0
- package/dist/tools/defineTool.js.map +1 -0
- package/dist/transport/CallbackTransport.d.ts +12 -0
- package/dist/transport/CallbackTransport.d.ts.map +1 -0
- package/dist/transport/CallbackTransport.js +28 -0
- package/dist/transport/CallbackTransport.js.map +1 -0
- package/dist/transport/StdoutTransport.d.ts +9 -0
- package/dist/transport/StdoutTransport.d.ts.map +1 -0
- package/dist/transport/StdoutTransport.js +63 -0
- package/dist/transport/StdoutTransport.js.map +1 -0
- package/dist/transport/Transport.d.ts +8 -0
- package/dist/transport/Transport.d.ts.map +1 -0
- package/dist/transport/Transport.js +3 -0
- package/dist/transport/Transport.js.map +1 -0
- package/dist/triggers/EventBus.d.ts +14 -0
- package/dist/triggers/EventBus.d.ts.map +1 -0
- package/dist/triggers/EventBus.js +18 -0
- package/dist/triggers/EventBus.js.map +1 -0
- package/dist/triggers/TriggerManager.d.ts +28 -0
- package/dist/triggers/TriggerManager.d.ts.map +1 -0
- package/dist/triggers/TriggerManager.js +158 -0
- package/dist/triggers/TriggerManager.js.map +1 -0
- package/dist/triggers/WebhookServer.d.ts +23 -0
- package/dist/triggers/WebhookServer.d.ts.map +1 -0
- package/dist/triggers/WebhookServer.js +127 -0
- package/dist/triggers/WebhookServer.js.map +1 -0
- package/dist/triggers/createAutonomousAgent.d.ts +49 -0
- package/dist/triggers/createAutonomousAgent.d.ts.map +1 -0
- package/dist/triggers/createAutonomousAgent.js +42 -0
- package/dist/triggers/createAutonomousAgent.js.map +1 -0
- package/dist/triggers/index.d.ts +8 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +12 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/types.d.ts +35 -0
- package/dist/triggers/types.d.ts.map +1 -0
- package/dist/triggers/types.js +3 -0
- package/dist/triggers/types.js.map +1 -0
- package/dist/types/index.d.ts +256 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/workflow/WorkflowBuilder.d.ts +22 -0
- package/dist/workflow/WorkflowBuilder.d.ts.map +1 -0
- package/dist/workflow/WorkflowBuilder.js +67 -0
- package/dist/workflow/WorkflowBuilder.js.map +1 -0
- package/dist/workflow/WorkflowRunner.d.ts +22 -0
- package/dist/workflow/WorkflowRunner.d.ts.map +1 -0
- package/dist/workflow/WorkflowRunner.js +97 -0
- package/dist/workflow/WorkflowRunner.js.map +1 -0
- package/dist/workflow/index.d.ts +5 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +10 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/types.d.ts +35 -0
- package/dist/workflow/types.d.ts.map +1 -0
- package/dist/workflow/types.js +3 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workspace/index.d.ts +55 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +189 -0
- package/dist/workspace/index.js.map +1 -0
- 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"}
|