@revealui/ai 0.1.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/LICENSE +22 -0
- package/LICENSE.commercial +112 -0
- package/README.md +314 -0
- package/dist/a2a/card.d.ts +26 -0
- package/dist/a2a/card.d.ts.map +1 -0
- package/dist/a2a/card.js +173 -0
- package/dist/a2a/handler.d.ts +26 -0
- package/dist/a2a/handler.d.ts.map +1 -0
- package/dist/a2a/handler.js +170 -0
- package/dist/a2a/index.d.ts +10 -0
- package/dist/a2a/index.d.ts.map +1 -0
- package/dist/a2a/index.js +9 -0
- package/dist/a2a/task-store.d.ts +42 -0
- package/dist/a2a/task-store.d.ts.map +1 -0
- package/dist/a2a/task-store.js +99 -0
- package/dist/audit/emitter.d.ts +34 -0
- package/dist/audit/emitter.d.ts.map +1 -0
- package/dist/audit/emitter.js +34 -0
- package/dist/audit/index.d.ts +44 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +48 -0
- package/dist/audit/observer.d.ts +108 -0
- package/dist/audit/observer.d.ts.map +1 -0
- package/dist/audit/observer.js +271 -0
- package/dist/audit/policy.d.ts +70 -0
- package/dist/audit/policy.d.ts.map +1 -0
- package/dist/audit/policy.js +209 -0
- package/dist/audit/store.d.ts +42 -0
- package/dist/audit/store.d.ts.map +1 -0
- package/dist/audit/store.js +80 -0
- package/dist/audit/types.d.ts +169 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +80 -0
- package/dist/client/hooks/index.d.ts +22 -0
- package/dist/client/hooks/index.d.ts.map +1 -0
- package/dist/client/hooks/index.js +21 -0
- package/dist/client/hooks/useAgentContext.d.ts +30 -0
- package/dist/client/hooks/useAgentContext.d.ts.map +1 -0
- package/dist/client/hooks/useAgentContext.js +161 -0
- package/dist/client/hooks/useAgentEvents.d.ts +126 -0
- package/dist/client/hooks/useAgentEvents.d.ts.map +1 -0
- package/dist/client/hooks/useAgentEvents.js +232 -0
- package/dist/client/hooks/useAgentStream.d.ts +44 -0
- package/dist/client/hooks/useAgentStream.d.ts.map +1 -0
- package/dist/client/hooks/useAgentStream.js +101 -0
- package/dist/client/hooks/useEpisodicMemory.d.ts +25 -0
- package/dist/client/hooks/useEpisodicMemory.d.ts.map +1 -0
- package/dist/client/hooks/useEpisodicMemory.js +174 -0
- package/dist/client/hooks/useWorkingMemory.d.ts +57 -0
- package/dist/client/hooks/useWorkingMemory.d.ts.map +1 -0
- package/dist/client/hooks/useWorkingMemory.js +276 -0
- package/dist/client/index.d.ts +14 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +13 -0
- package/dist/embeddings/index.d.ts +51 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +73 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +103 -0
- package/dist/inference/context-assembly.d.ts +27 -0
- package/dist/inference/context-assembly.d.ts.map +1 -0
- package/dist/inference/context-assembly.js +81 -0
- package/dist/inference/overflow-compressor.d.ts +17 -0
- package/dist/inference/overflow-compressor.d.ts.map +1 -0
- package/dist/inference/overflow-compressor.js +40 -0
- package/dist/inference/runRag.d.ts +35 -0
- package/dist/inference/runRag.d.ts.map +1 -0
- package/dist/inference/runRag.js +53 -0
- package/dist/ingestion/bm25.d.ts +29 -0
- package/dist/ingestion/bm25.d.ts.map +1 -0
- package/dist/ingestion/bm25.js +161 -0
- package/dist/ingestion/cms-indexer.d.ts +39 -0
- package/dist/ingestion/cms-indexer.d.ts.map +1 -0
- package/dist/ingestion/cms-indexer.js +74 -0
- package/dist/ingestion/file-parsers.d.ts +51 -0
- package/dist/ingestion/file-parsers.d.ts.map +1 -0
- package/dist/ingestion/file-parsers.js +247 -0
- package/dist/ingestion/hybrid-search.d.ts +22 -0
- package/dist/ingestion/hybrid-search.d.ts.map +1 -0
- package/dist/ingestion/hybrid-search.js +63 -0
- package/dist/ingestion/index.d.ts +9 -0
- package/dist/ingestion/index.d.ts.map +1 -0
- package/dist/ingestion/index.js +8 -0
- package/dist/ingestion/pipeline.d.ts +35 -0
- package/dist/ingestion/pipeline.d.ts.map +1 -0
- package/dist/ingestion/pipeline.js +114 -0
- package/dist/ingestion/rag-vector-service.d.ts +34 -0
- package/dist/ingestion/rag-vector-service.d.ts.map +1 -0
- package/dist/ingestion/rag-vector-service.js +98 -0
- package/dist/ingestion/reranker.d.ts +10 -0
- package/dist/ingestion/reranker.d.ts.map +1 -0
- package/dist/ingestion/reranker.js +41 -0
- package/dist/ingestion/text-splitter.d.ts +25 -0
- package/dist/ingestion/text-splitter.d.ts.map +1 -0
- package/dist/ingestion/text-splitter.js +119 -0
- package/dist/llm/cache-utils.d.ts +146 -0
- package/dist/llm/cache-utils.d.ts.map +1 -0
- package/dist/llm/cache-utils.js +204 -0
- package/dist/llm/client.d.ts +134 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/client.js +497 -0
- package/dist/llm/key-validator.d.ts +25 -0
- package/dist/llm/key-validator.d.ts.map +1 -0
- package/dist/llm/key-validator.js +101 -0
- package/dist/llm/provider-health.d.ts +40 -0
- package/dist/llm/provider-health.d.ts.map +1 -0
- package/dist/llm/provider-health.js +97 -0
- package/dist/llm/providers/anthropic.d.ts +31 -0
- package/dist/llm/providers/anthropic.d.ts.map +1 -0
- package/dist/llm/providers/anthropic.js +248 -0
- package/dist/llm/providers/base.d.ts +111 -0
- package/dist/llm/providers/base.d.ts.map +1 -0
- package/dist/llm/providers/base.js +6 -0
- package/dist/llm/providers/groq.d.ts +23 -0
- package/dist/llm/providers/groq.d.ts.map +1 -0
- package/dist/llm/providers/groq.js +27 -0
- package/dist/llm/providers/ollama.d.ts +27 -0
- package/dist/llm/providers/ollama.d.ts.map +1 -0
- package/dist/llm/providers/ollama.js +48 -0
- package/dist/llm/providers/openai.d.ts +19 -0
- package/dist/llm/providers/openai.d.ts.map +1 -0
- package/dist/llm/providers/openai.js +245 -0
- package/dist/llm/providers/vultr.d.ts +18 -0
- package/dist/llm/providers/vultr.d.ts.map +1 -0
- package/dist/llm/providers/vultr.js +168 -0
- package/dist/llm/response-cache.d.ts +166 -0
- package/dist/llm/response-cache.d.ts.map +1 -0
- package/dist/llm/response-cache.js +233 -0
- package/dist/llm/semantic-cache.d.ts +179 -0
- package/dist/llm/semantic-cache.d.ts.map +1 -0
- package/dist/llm/semantic-cache.js +306 -0
- package/dist/llm/server.d.ts +14 -0
- package/dist/llm/server.d.ts.map +1 -0
- package/dist/llm/server.js +15 -0
- package/dist/llm/token-counter.d.ts +48 -0
- package/dist/llm/token-counter.d.ts.map +1 -0
- package/dist/llm/token-counter.js +77 -0
- package/dist/llm/workspace-provider-config.d.ts +38 -0
- package/dist/llm/workspace-provider-config.d.ts.map +1 -0
- package/dist/llm/workspace-provider-config.js +47 -0
- package/dist/memory/agent/context-manager.d.ts +148 -0
- package/dist/memory/agent/context-manager.d.ts.map +1 -0
- package/dist/memory/agent/context-manager.js +284 -0
- package/dist/memory/agent/index.d.ts +7 -0
- package/dist/memory/agent/index.d.ts.map +1 -0
- package/dist/memory/agent/index.js +6 -0
- package/dist/memory/crdt/index.d.ts +13 -0
- package/dist/memory/crdt/index.d.ts.map +1 -0
- package/dist/memory/crdt/index.js +12 -0
- package/dist/memory/crdt/lww-register.d.ts +108 -0
- package/dist/memory/crdt/lww-register.d.ts.map +1 -0
- package/dist/memory/crdt/lww-register.js +169 -0
- package/dist/memory/crdt/or-set.d.ts +141 -0
- package/dist/memory/crdt/or-set.d.ts.map +1 -0
- package/dist/memory/crdt/or-set.js +291 -0
- package/dist/memory/crdt/pn-counter.d.ts +116 -0
- package/dist/memory/crdt/pn-counter.d.ts.map +1 -0
- package/dist/memory/crdt/pn-counter.js +174 -0
- package/dist/memory/crdt/vector-clock.d.ts +115 -0
- package/dist/memory/crdt/vector-clock.d.ts.map +1 -0
- package/dist/memory/crdt/vector-clock.js +179 -0
- package/dist/memory/errors/index.d.ts +56 -0
- package/dist/memory/errors/index.d.ts.map +1 -0
- package/dist/memory/errors/index.js +85 -0
- package/dist/memory/index.d.ts +21 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +20 -0
- package/dist/memory/persistence/crdt-persistence.d.ts +85 -0
- package/dist/memory/persistence/crdt-persistence.d.ts.map +1 -0
- package/dist/memory/persistence/crdt-persistence.js +204 -0
- package/dist/memory/persistence/index.d.ts +7 -0
- package/dist/memory/persistence/index.d.ts.map +1 -0
- package/dist/memory/persistence/index.js +6 -0
- package/dist/memory/preferences/index.d.ts +7 -0
- package/dist/memory/preferences/index.d.ts.map +1 -0
- package/dist/memory/preferences/index.js +6 -0
- package/dist/memory/preferences/user-preferences-manager.d.ts +133 -0
- package/dist/memory/preferences/user-preferences-manager.d.ts.map +1 -0
- package/dist/memory/preferences/user-preferences-manager.js +342 -0
- package/dist/memory/services/index.d.ts +8 -0
- package/dist/memory/services/index.d.ts.map +1 -0
- package/dist/memory/services/index.js +6 -0
- package/dist/memory/services/node-id-service.d.ts +75 -0
- package/dist/memory/services/node-id-service.d.ts.map +1 -0
- package/dist/memory/services/node-id-service.js +190 -0
- package/dist/memory/stores/episodic-memory.d.ts +182 -0
- package/dist/memory/stores/episodic-memory.d.ts.map +1 -0
- package/dist/memory/stores/episodic-memory.js +378 -0
- package/dist/memory/stores/index.d.ts +16 -0
- package/dist/memory/stores/index.d.ts.map +1 -0
- package/dist/memory/stores/index.js +15 -0
- package/dist/memory/stores/procedural-memory.d.ts +89 -0
- package/dist/memory/stores/procedural-memory.d.ts.map +1 -0
- package/dist/memory/stores/procedural-memory.js +152 -0
- package/dist/memory/stores/semantic-memory.d.ts +92 -0
- package/dist/memory/stores/semantic-memory.d.ts.map +1 -0
- package/dist/memory/stores/semantic-memory.js +155 -0
- package/dist/memory/stores/working-memory.d.ts +225 -0
- package/dist/memory/stores/working-memory.d.ts.map +1 -0
- package/dist/memory/stores/working-memory.js +336 -0
- package/dist/memory/utils/deep-clone.d.ts +10 -0
- package/dist/memory/utils/deep-clone.d.ts.map +1 -0
- package/dist/memory/utils/deep-clone.js +9 -0
- package/dist/memory/utils/index.d.ts +8 -0
- package/dist/memory/utils/index.d.ts.map +1 -0
- package/dist/memory/utils/index.js +7 -0
- package/dist/memory/utils/logger.d.ts +21 -0
- package/dist/memory/utils/logger.d.ts.map +1 -0
- package/dist/memory/utils/logger.js +62 -0
- package/dist/memory/utils/sql-helpers.d.ts +97 -0
- package/dist/memory/utils/sql-helpers.d.ts.map +1 -0
- package/dist/memory/utils/sql-helpers.js +214 -0
- package/dist/memory/utils/validation.d.ts +62 -0
- package/dist/memory/utils/validation.d.ts.map +1 -0
- package/dist/memory/utils/validation.js +244 -0
- package/dist/memory/vector/index.d.ts +12 -0
- package/dist/memory/vector/index.d.ts.map +1 -0
- package/dist/memory/vector/index.js +14 -0
- package/dist/memory/vector/vector-memory-service.d.ts +88 -0
- package/dist/memory/vector/vector-memory-service.d.ts.map +1 -0
- package/dist/memory/vector/vector-memory-service.js +335 -0
- package/dist/observability/logger.d.ts +79 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +165 -0
- package/dist/observability/metrics.d.ts +43 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +197 -0
- package/dist/observability/query.d.ts +150 -0
- package/dist/observability/query.d.ts.map +1 -0
- package/dist/observability/query.js +339 -0
- package/dist/observability/types.d.ts +140 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +6 -0
- package/dist/orchestration/agent.d.ts +98 -0
- package/dist/orchestration/agent.d.ts.map +1 -0
- package/dist/orchestration/agent.js +6 -0
- package/dist/orchestration/defaults.d.ts +21 -0
- package/dist/orchestration/defaults.d.ts.map +1 -0
- package/dist/orchestration/defaults.js +22 -0
- package/dist/orchestration/memory-integration.d.ts +58 -0
- package/dist/orchestration/memory-integration.d.ts.map +1 -0
- package/dist/orchestration/memory-integration.js +130 -0
- package/dist/orchestration/orchestrator.d.ts +67 -0
- package/dist/orchestration/orchestrator.d.ts.map +1 -0
- package/dist/orchestration/orchestrator.js +174 -0
- package/dist/orchestration/runtime.d.ts +82 -0
- package/dist/orchestration/runtime.d.ts.map +1 -0
- package/dist/orchestration/runtime.js +251 -0
- package/dist/orchestration/streaming-runtime.d.ts +36 -0
- package/dist/orchestration/streaming-runtime.d.ts.map +1 -0
- package/dist/orchestration/streaming-runtime.js +175 -0
- package/dist/orchestration/ticket-agent.d.ts +70 -0
- package/dist/orchestration/ticket-agent.d.ts.map +1 -0
- package/dist/orchestration/ticket-agent.js +146 -0
- package/dist/skills/activation/index.d.ts +7 -0
- package/dist/skills/activation/index.d.ts.map +1 -0
- package/dist/skills/activation/index.js +6 -0
- package/dist/skills/activation/skill-activator.d.ts +68 -0
- package/dist/skills/activation/skill-activator.d.ts.map +1 -0
- package/dist/skills/activation/skill-activator.js +224 -0
- package/dist/skills/catalog/catalog-search.d.ts +55 -0
- package/dist/skills/catalog/catalog-search.d.ts.map +1 -0
- package/dist/skills/catalog/catalog-search.js +111 -0
- package/dist/skills/catalog/catalog-types.d.ts +81 -0
- package/dist/skills/catalog/catalog-types.d.ts.map +1 -0
- package/dist/skills/catalog/catalog-types.js +66 -0
- package/dist/skills/catalog/index.d.ts +9 -0
- package/dist/skills/catalog/index.d.ts.map +1 -0
- package/dist/skills/catalog/index.js +7 -0
- package/dist/skills/catalog/vercel-catalog.d.ts +42 -0
- package/dist/skills/catalog/vercel-catalog.d.ts.map +1 -0
- package/dist/skills/catalog/vercel-catalog.js +189 -0
- package/dist/skills/compat/index.d.ts +9 -0
- package/dist/skills/compat/index.d.ts.map +1 -0
- package/dist/skills/compat/index.js +8 -0
- package/dist/skills/compat/skill-enhancer.d.ts +37 -0
- package/dist/skills/compat/skill-enhancer.d.ts.map +1 -0
- package/dist/skills/compat/skill-enhancer.js +76 -0
- package/dist/skills/compat/tool-mapper.d.ts +61 -0
- package/dist/skills/compat/tool-mapper.d.ts.map +1 -0
- package/dist/skills/compat/tool-mapper.js +168 -0
- package/dist/skills/compat/vercel-compat.d.ts +33 -0
- package/dist/skills/compat/vercel-compat.d.ts.map +1 -0
- package/dist/skills/compat/vercel-compat.js +132 -0
- package/dist/skills/index.d.ts +40 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +47 -0
- package/dist/skills/integration/agent-skill-provider.d.ts +94 -0
- package/dist/skills/integration/agent-skill-provider.d.ts.map +1 -0
- package/dist/skills/integration/agent-skill-provider.js +161 -0
- package/dist/skills/integration/index.d.ts +7 -0
- package/dist/skills/integration/index.d.ts.map +1 -0
- package/dist/skills/integration/index.js +6 -0
- package/dist/skills/loader/github-loader.d.ts +61 -0
- package/dist/skills/loader/github-loader.d.ts.map +1 -0
- package/dist/skills/loader/github-loader.js +176 -0
- package/dist/skills/loader/index.d.ts +10 -0
- package/dist/skills/loader/index.d.ts.map +1 -0
- package/dist/skills/loader/index.js +9 -0
- package/dist/skills/loader/local-loader.d.ts +56 -0
- package/dist/skills/loader/local-loader.d.ts.map +1 -0
- package/dist/skills/loader/local-loader.js +186 -0
- package/dist/skills/loader/vercel-loader.d.ts +64 -0
- package/dist/skills/loader/vercel-loader.d.ts.map +1 -0
- package/dist/skills/loader/vercel-loader.js +313 -0
- package/dist/skills/loader/vercel-types.d.ts +64 -0
- package/dist/skills/loader/vercel-types.d.ts.map +1 -0
- package/dist/skills/loader/vercel-types.js +55 -0
- package/dist/skills/parser/index.d.ts +7 -0
- package/dist/skills/parser/index.d.ts.map +1 -0
- package/dist/skills/parser/index.js +6 -0
- package/dist/skills/parser/skill-md-parser.d.ts +64 -0
- package/dist/skills/parser/skill-md-parser.d.ts.map +1 -0
- package/dist/skills/parser/skill-md-parser.js +242 -0
- package/dist/skills/registry/index.d.ts +7 -0
- package/dist/skills/registry/index.d.ts.map +1 -0
- package/dist/skills/registry/index.js +6 -0
- package/dist/skills/registry/skill-registry.d.ts +133 -0
- package/dist/skills/registry/skill-registry.d.ts.map +1 -0
- package/dist/skills/registry/skill-registry.js +373 -0
- package/dist/skills/types.d.ts +216 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +176 -0
- package/dist/templates/agent-spec.d.ts +138 -0
- package/dist/templates/agent-spec.d.ts.map +1 -0
- package/dist/templates/agent-spec.js +138 -0
- package/dist/templates/index.d.ts +56 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +58 -0
- package/dist/templates/prompt-spec.d.ts +140 -0
- package/dist/templates/prompt-spec.d.ts.map +1 -0
- package/dist/templates/prompt-spec.js +210 -0
- package/dist/templates/skill-spec.d.ts +106 -0
- package/dist/templates/skill-spec.d.ts.map +1 -0
- package/dist/templates/skill-spec.js +119 -0
- package/dist/tools/base.d.ts +74 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +6 -0
- package/dist/tools/cms/collection-tools.d.ts +36 -0
- package/dist/tools/cms/collection-tools.d.ts.map +1 -0
- package/dist/tools/cms/collection-tools.js +178 -0
- package/dist/tools/cms/factory.d.ts +89 -0
- package/dist/tools/cms/factory.d.ts.map +1 -0
- package/dist/tools/cms/factory.js +462 -0
- package/dist/tools/cms/global-tools.d.ts +21 -0
- package/dist/tools/cms/global-tools.d.ts.map +1 -0
- package/dist/tools/cms/global-tools.js +92 -0
- package/dist/tools/cms/index.d.ts +11 -0
- package/dist/tools/cms/index.d.ts.map +1 -0
- package/dist/tools/cms/index.js +11 -0
- package/dist/tools/cms/media-tools.d.ts +31 -0
- package/dist/tools/cms/media-tools.d.ts.map +1 -0
- package/dist/tools/cms/media-tools.js +140 -0
- package/dist/tools/cms/user-tools.d.ts +31 -0
- package/dist/tools/cms/user-tools.d.ts.map +1 -0
- package/dist/tools/cms/user-tools.js +135 -0
- package/dist/tools/deduplicator.d.ts +19 -0
- package/dist/tools/deduplicator.d.ts.map +1 -0
- package/dist/tools/deduplicator.js +53 -0
- package/dist/tools/document-summarizer.d.ts +11 -0
- package/dist/tools/document-summarizer.d.ts.map +1 -0
- package/dist/tools/document-summarizer.js +82 -0
- package/dist/tools/mcp-adapter.d.ts +66 -0
- package/dist/tools/mcp-adapter.d.ts.map +1 -0
- package/dist/tools/mcp-adapter.js +152 -0
- package/dist/tools/memory/index.d.ts +3 -0
- package/dist/tools/memory/index.d.ts.map +1 -0
- package/dist/tools/memory/index.js +1 -0
- package/dist/tools/memory/store-memory.d.ts +39 -0
- package/dist/tools/memory/store-memory.d.ts.map +1 -0
- package/dist/tools/memory/store-memory.js +94 -0
- package/dist/tools/registry.d.ts +14 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +48 -0
- package/dist/tools/ticket-tools.d.ts +31 -0
- package/dist/tools/ticket-tools.d.ts.map +1 -0
- package/dist/tools/ticket-tools.js +74 -0
- package/dist/tools/web/duck-duck-go.d.ts +52 -0
- package/dist/tools/web/duck-duck-go.d.ts.map +1 -0
- package/dist/tools/web/duck-duck-go.js +202 -0
- package/dist/tools/web/exa.d.ts +34 -0
- package/dist/tools/web/exa.d.ts.map +1 -0
- package/dist/tools/web/exa.js +80 -0
- package/dist/tools/web/index.d.ts +6 -0
- package/dist/tools/web/index.d.ts.map +1 -0
- package/dist/tools/web/index.js +4 -0
- package/dist/tools/web/scraper.d.ts +9 -0
- package/dist/tools/web/scraper.d.ts.map +1 -0
- package/dist/tools/web/scraper.js +118 -0
- package/dist/tools/web/tavily.d.ts +32 -0
- package/dist/tools/web/tavily.d.ts.map +1 -0
- package/dist/tools/web/tavily.js +73 -0
- package/dist/tools/web/types.d.ts +31 -0
- package/dist/tools/web/types.d.ts.map +1 -0
- package/dist/tools/web/types.js +9 -0
- package/package.json +143 -0
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for managing installed skills.
|
|
5
|
+
* Follows the pattern from tools/registry.ts.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as os from 'node:os';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
import { generateEmbedding } from '../../embeddings/index.js';
|
|
11
|
+
import { parseSkillMd, parseSkillMetadataOnly } from '../parser/index.js';
|
|
12
|
+
/**
|
|
13
|
+
* Cosine similarity between two vectors.
|
|
14
|
+
*/
|
|
15
|
+
function cosineSimilarity(a, b) {
|
|
16
|
+
if (a.length !== b.length) {
|
|
17
|
+
throw new Error('Vectors must have same length');
|
|
18
|
+
}
|
|
19
|
+
let dotProduct = 0;
|
|
20
|
+
let normA = 0;
|
|
21
|
+
let normB = 0;
|
|
22
|
+
for (let i = 0; i < a.length; i++) {
|
|
23
|
+
const aVal = a[i] ?? 0;
|
|
24
|
+
const bVal = b[i] ?? 0;
|
|
25
|
+
dotProduct += aVal * bVal;
|
|
26
|
+
normA += aVal * aVal;
|
|
27
|
+
normB += bVal * bVal;
|
|
28
|
+
}
|
|
29
|
+
const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
|
|
30
|
+
return magnitude === 0 ? 0 : dotProduct / magnitude;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Skill registry for managing installed skills.
|
|
34
|
+
*/
|
|
35
|
+
export class SkillRegistry {
|
|
36
|
+
skills = new Map();
|
|
37
|
+
metadataCache = new Map();
|
|
38
|
+
/** Maps skill name (metadata or directory) to directory path */
|
|
39
|
+
nameToPath = new Map();
|
|
40
|
+
globalDir;
|
|
41
|
+
localDir;
|
|
42
|
+
projectRoot;
|
|
43
|
+
constructor(config = {}) {
|
|
44
|
+
this.globalDir = config.globalDir ?? path.join(os.homedir(), '.revealui', 'skills');
|
|
45
|
+
this.localDir = config.localDir ?? '.revealui/skills';
|
|
46
|
+
this.projectRoot = config.projectRoot ?? process.cwd();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the resolved local directory path.
|
|
50
|
+
*/
|
|
51
|
+
getLocalDirPath() {
|
|
52
|
+
return path.resolve(this.projectRoot, this.localDir);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Register a skill.
|
|
56
|
+
*
|
|
57
|
+
* @throws Error if skill name already registered
|
|
58
|
+
*/
|
|
59
|
+
register(skill) {
|
|
60
|
+
if (this.skills.has(skill.metadata.name)) {
|
|
61
|
+
throw new Error(`Skill with name "${skill.metadata.name}" is already registered`);
|
|
62
|
+
}
|
|
63
|
+
this.skills.set(skill.metadata.name, skill);
|
|
64
|
+
this.metadataCache.set(skill.metadata.name, skill.metadata);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Unregister a skill by name.
|
|
68
|
+
*/
|
|
69
|
+
unregister(name) {
|
|
70
|
+
this.skills.delete(name);
|
|
71
|
+
this.metadataCache.delete(name);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get a skill by name.
|
|
75
|
+
*/
|
|
76
|
+
get(name) {
|
|
77
|
+
return this.skills.get(name);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if a skill exists.
|
|
81
|
+
*/
|
|
82
|
+
has(name) {
|
|
83
|
+
return this.skills.has(name);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get all registered skills.
|
|
87
|
+
*/
|
|
88
|
+
getAll() {
|
|
89
|
+
return Array.from(this.skills.values());
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get all skill names.
|
|
93
|
+
*/
|
|
94
|
+
getNames() {
|
|
95
|
+
return Array.from(this.skills.keys());
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Load all skill metadata from disk (lightweight).
|
|
99
|
+
* Only loads frontmatter, not full instructions.
|
|
100
|
+
*/
|
|
101
|
+
async loadAllMetadata() {
|
|
102
|
+
this.metadataCache.clear();
|
|
103
|
+
this.nameToPath.clear();
|
|
104
|
+
// Load from both global and local directories
|
|
105
|
+
await this.loadMetadataFromDirectory(this.globalDir, 'global');
|
|
106
|
+
await this.loadMetadataFromDirectory(this.getLocalDirPath(), 'local');
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Load metadata from a specific directory.
|
|
110
|
+
*/
|
|
111
|
+
async loadMetadataFromDirectory(dir, scope) {
|
|
112
|
+
if (!fs.existsSync(dir)) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
116
|
+
for (const entry of entries) {
|
|
117
|
+
if (!entry.isDirectory())
|
|
118
|
+
continue;
|
|
119
|
+
const skillDirPath = path.join(dir, entry.name);
|
|
120
|
+
const skillMdPath = path.join(skillDirPath, 'SKILL.md');
|
|
121
|
+
if (!fs.existsSync(skillMdPath))
|
|
122
|
+
continue;
|
|
123
|
+
try {
|
|
124
|
+
const content = fs.readFileSync(skillMdPath, 'utf-8');
|
|
125
|
+
const metadata = parseSkillMetadataOnly(content);
|
|
126
|
+
// Local skills override global ones
|
|
127
|
+
if (scope === 'local' || !this.metadataCache.has(metadata.name)) {
|
|
128
|
+
this.metadataCache.set(metadata.name, metadata);
|
|
129
|
+
// Map both directory name and metadata name to the path
|
|
130
|
+
this.nameToPath.set(entry.name, skillDirPath);
|
|
131
|
+
this.nameToPath.set(metadata.name, skillDirPath);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// Skip directories with missing or invalid skill.json — registry remains partial
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get all loaded metadata (lightweight listing).
|
|
141
|
+
*/
|
|
142
|
+
getAllMetadata() {
|
|
143
|
+
return Array.from(this.metadataCache.values());
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get metadata for a specific skill.
|
|
147
|
+
*/
|
|
148
|
+
getMetadata(name) {
|
|
149
|
+
return this.metadataCache.get(name);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Load a full skill from disk (including instructions and resources).
|
|
153
|
+
*
|
|
154
|
+
* @param name - Skill name (metadata name or directory name)
|
|
155
|
+
* @param generateEmbed - Whether to generate embedding for the skill
|
|
156
|
+
*/
|
|
157
|
+
async loadSkill(name, generateEmbed = false) {
|
|
158
|
+
// Check if already loaded by metadata name
|
|
159
|
+
if (this.skills.has(name)) {
|
|
160
|
+
return this.skills.get(name);
|
|
161
|
+
}
|
|
162
|
+
// Try to find the skill path using the name mapping
|
|
163
|
+
let skillPath = this.nameToPath.get(name);
|
|
164
|
+
let scope = 'local';
|
|
165
|
+
if (skillPath) {
|
|
166
|
+
// Determine scope from path
|
|
167
|
+
scope = skillPath.startsWith(this.globalDir) ? 'global' : 'local';
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// Fallback: try directory name directly (for skills not yet in cache)
|
|
171
|
+
skillPath = path.join(this.getLocalDirPath(), name);
|
|
172
|
+
if (!fs.existsSync(path.join(skillPath, 'SKILL.md'))) {
|
|
173
|
+
skillPath = path.join(this.globalDir, name);
|
|
174
|
+
scope = 'global';
|
|
175
|
+
if (!fs.existsSync(path.join(skillPath, 'SKILL.md'))) {
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const skillMdPath = path.join(skillPath, 'SKILL.md');
|
|
181
|
+
if (!fs.existsSync(skillMdPath)) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
const content = fs.readFileSync(skillMdPath, 'utf-8');
|
|
185
|
+
const parsed = parseSkillMd(content);
|
|
186
|
+
// Check if already loaded by the actual metadata name
|
|
187
|
+
if (this.skills.has(parsed.metadata.name)) {
|
|
188
|
+
return this.skills.get(parsed.metadata.name);
|
|
189
|
+
}
|
|
190
|
+
// Load resources
|
|
191
|
+
const resources = await this.loadResources(skillPath);
|
|
192
|
+
// Generate embedding if requested
|
|
193
|
+
let embedding;
|
|
194
|
+
if (generateEmbed) {
|
|
195
|
+
const textForEmbedding = `${parsed.metadata.name}: ${parsed.metadata.description}\n${parsed.instructions.slice(0, 500)}`;
|
|
196
|
+
const result = await generateEmbedding(textForEmbedding);
|
|
197
|
+
embedding = result.vector;
|
|
198
|
+
}
|
|
199
|
+
const skill = {
|
|
200
|
+
metadata: parsed.metadata,
|
|
201
|
+
instructions: parsed.instructions,
|
|
202
|
+
sourcePath: skillPath,
|
|
203
|
+
scope,
|
|
204
|
+
resources,
|
|
205
|
+
embedding,
|
|
206
|
+
installedAt: this.getInstallDate(skillPath),
|
|
207
|
+
};
|
|
208
|
+
this.register(skill);
|
|
209
|
+
// Update name mapping with both names
|
|
210
|
+
this.nameToPath.set(parsed.metadata.name, skillPath);
|
|
211
|
+
this.nameToPath.set(path.basename(skillPath), skillPath);
|
|
212
|
+
return skill;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Load all skills from disk (full loading).
|
|
216
|
+
*/
|
|
217
|
+
async loadAllSkills(generateEmbeddings = false) {
|
|
218
|
+
// First ensure metadata is loaded
|
|
219
|
+
if (this.metadataCache.size === 0) {
|
|
220
|
+
await this.loadAllMetadata();
|
|
221
|
+
}
|
|
222
|
+
// Load each skill fully using metadata names
|
|
223
|
+
for (const name of this.metadataCache.keys()) {
|
|
224
|
+
// Skip if already loaded
|
|
225
|
+
if (!this.skills.has(name)) {
|
|
226
|
+
await this.loadSkill(name, generateEmbeddings);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Load resources from a skill directory.
|
|
232
|
+
*/
|
|
233
|
+
async loadResources(skillPath) {
|
|
234
|
+
const resources = [];
|
|
235
|
+
const resourceDirs = [
|
|
236
|
+
{ dir: 'scripts', type: 'script' },
|
|
237
|
+
{ dir: 'references', type: 'reference' },
|
|
238
|
+
{ dir: 'assets', type: 'asset' },
|
|
239
|
+
{ dir: 'templates', type: 'template' },
|
|
240
|
+
{ dir: 'schemas', type: 'schema' },
|
|
241
|
+
];
|
|
242
|
+
for (const { dir, type } of resourceDirs) {
|
|
243
|
+
const dirPath = path.join(skillPath, dir);
|
|
244
|
+
if (!fs.existsSync(dirPath))
|
|
245
|
+
continue;
|
|
246
|
+
const files = this.walkDirectory(dirPath);
|
|
247
|
+
for (const file of files) {
|
|
248
|
+
resources.push({
|
|
249
|
+
path: path.relative(skillPath, file),
|
|
250
|
+
type,
|
|
251
|
+
// Content loaded on demand
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return resources;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Recursively walk a directory.
|
|
259
|
+
*/
|
|
260
|
+
walkDirectory(dir) {
|
|
261
|
+
const files = [];
|
|
262
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
263
|
+
for (const entry of entries) {
|
|
264
|
+
const fullPath = path.join(dir, entry.name);
|
|
265
|
+
if (entry.isDirectory()) {
|
|
266
|
+
files.push(...this.walkDirectory(fullPath));
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
files.push(fullPath);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return files;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get install date from directory stats.
|
|
276
|
+
*/
|
|
277
|
+
getInstallDate(skillPath) {
|
|
278
|
+
try {
|
|
279
|
+
const stats = fs.statSync(skillPath);
|
|
280
|
+
return stats.birthtime.toISOString();
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return undefined;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Search skills by embedding similarity.
|
|
288
|
+
*
|
|
289
|
+
* @param query - Search query text
|
|
290
|
+
* @param threshold - Minimum similarity score (default 0.7)
|
|
291
|
+
* @param limit - Maximum results to return
|
|
292
|
+
*/
|
|
293
|
+
async searchByEmbedding(query, threshold = 0.7, limit = 10) {
|
|
294
|
+
// Generate query embedding
|
|
295
|
+
const queryEmbedding = await generateEmbedding(query);
|
|
296
|
+
// Load all skills with embeddings if not already loaded
|
|
297
|
+
const skills = this.getAll();
|
|
298
|
+
const results = [];
|
|
299
|
+
for (const skill of skills) {
|
|
300
|
+
// Generate embedding if missing
|
|
301
|
+
if (!skill.embedding) {
|
|
302
|
+
const textForEmbedding = `${skill.metadata.name}: ${skill.metadata.description}\n${skill.instructions.slice(0, 500)}`;
|
|
303
|
+
const result = await generateEmbedding(textForEmbedding);
|
|
304
|
+
skill.embedding = result.vector;
|
|
305
|
+
}
|
|
306
|
+
const score = cosineSimilarity(queryEmbedding.vector, skill.embedding);
|
|
307
|
+
if (score >= threshold) {
|
|
308
|
+
results.push({ skill, score });
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// Sort by score descending and limit
|
|
312
|
+
return results.sort((a, b) => b.score - a.score).slice(0, limit);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Search skills by keyword matching.
|
|
316
|
+
*/
|
|
317
|
+
searchByKeyword(query) {
|
|
318
|
+
const queryLower = query.toLowerCase();
|
|
319
|
+
const results = [];
|
|
320
|
+
for (const skill of this.skills.values()) {
|
|
321
|
+
let relevance = 0;
|
|
322
|
+
// Check name
|
|
323
|
+
if (skill.metadata.name.toLowerCase().includes(queryLower)) {
|
|
324
|
+
relevance += 10;
|
|
325
|
+
}
|
|
326
|
+
// Check description
|
|
327
|
+
if (skill.metadata.description.toLowerCase().includes(queryLower)) {
|
|
328
|
+
relevance += 5;
|
|
329
|
+
}
|
|
330
|
+
// Check tags
|
|
331
|
+
if (skill.metadata.tags?.some((tag) => tag.toLowerCase().includes(queryLower))) {
|
|
332
|
+
relevance += 3;
|
|
333
|
+
}
|
|
334
|
+
// Check instructions
|
|
335
|
+
if (skill.instructions.toLowerCase().includes(queryLower)) {
|
|
336
|
+
relevance += 1;
|
|
337
|
+
}
|
|
338
|
+
if (relevance > 0) {
|
|
339
|
+
results.push({ skill, relevance });
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return results.sort((a, b) => b.relevance - a.relevance).map((r) => r.skill);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Get the installation directory for a skill.
|
|
346
|
+
*/
|
|
347
|
+
getSkillDirectory(name, scope = 'local') {
|
|
348
|
+
if (scope === 'local') {
|
|
349
|
+
return path.join(this.getLocalDirPath(), name);
|
|
350
|
+
}
|
|
351
|
+
return path.join(this.globalDir, name);
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Ensure a directory exists.
|
|
355
|
+
*/
|
|
356
|
+
ensureDirectory(dir) {
|
|
357
|
+
if (!fs.existsSync(dir)) {
|
|
358
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Clear the registry (for testing).
|
|
363
|
+
*/
|
|
364
|
+
clear() {
|
|
365
|
+
this.skills.clear();
|
|
366
|
+
this.metadataCache.clear();
|
|
367
|
+
this.nameToPath.clear();
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Global skill registry instance.
|
|
372
|
+
*/
|
|
373
|
+
export const globalSkillRegistry = new SkillRegistry();
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Types
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas and types for Agent Skills (skills.sh ecosystem).
|
|
5
|
+
* Skills are instruction packages that agents can discover and use.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod/v4';
|
|
8
|
+
/**
|
|
9
|
+
* Allowed tools specification.
|
|
10
|
+
* Format: "ToolName" or "ToolName(pattern:*)" for filtered access.
|
|
11
|
+
*/
|
|
12
|
+
export declare const AllowedToolSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
13
|
+
name: z.ZodString;
|
|
14
|
+
filter: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>]>;
|
|
16
|
+
export type AllowedTool = z.infer<typeof AllowedToolSchema>;
|
|
17
|
+
/**
|
|
18
|
+
* Skill metadata from SKILL.md frontmatter.
|
|
19
|
+
* This is the lightweight representation loaded at startup (~100 tokens).
|
|
20
|
+
*/
|
|
21
|
+
export declare const SkillMetadataSchema: z.ZodObject<{
|
|
22
|
+
name: z.ZodString;
|
|
23
|
+
description: z.ZodString;
|
|
24
|
+
version: z.ZodOptional<z.ZodString>;
|
|
25
|
+
license: z.ZodOptional<z.ZodString>;
|
|
26
|
+
author: z.ZodOptional<z.ZodString>;
|
|
27
|
+
repository: z.ZodOptional<z.ZodString>;
|
|
28
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
29
|
+
compatibility: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
30
|
+
openai: "openai";
|
|
31
|
+
anthropic: "anthropic";
|
|
32
|
+
"claude-code": "claude-code";
|
|
33
|
+
cursor: "cursor";
|
|
34
|
+
windsurf: "windsurf";
|
|
35
|
+
cline: "cline";
|
|
36
|
+
copilot: "copilot";
|
|
37
|
+
universal: "universal";
|
|
38
|
+
}>>>;
|
|
39
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
40
|
+
minContextWindow: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
requiresApproval: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
export type SkillMetadata = z.infer<typeof SkillMetadataSchema>;
|
|
44
|
+
/**
|
|
45
|
+
* Resource file within a skill package.
|
|
46
|
+
*/
|
|
47
|
+
export declare const SkillResourceSchema: z.ZodObject<{
|
|
48
|
+
path: z.ZodString;
|
|
49
|
+
type: z.ZodEnum<{
|
|
50
|
+
template: "template";
|
|
51
|
+
schema: "schema";
|
|
52
|
+
script: "script";
|
|
53
|
+
reference: "reference";
|
|
54
|
+
asset: "asset";
|
|
55
|
+
}>;
|
|
56
|
+
content: z.ZodOptional<z.ZodString>;
|
|
57
|
+
}, z.core.$strip>;
|
|
58
|
+
export type SkillResource = z.infer<typeof SkillResourceSchema>;
|
|
59
|
+
/**
|
|
60
|
+
* Source of a skill - where it was loaded from.
|
|
61
|
+
*/
|
|
62
|
+
export declare const SkillSourceSchema: z.ZodEnum<{
|
|
63
|
+
github: "github";
|
|
64
|
+
local: "local";
|
|
65
|
+
vercel: "vercel";
|
|
66
|
+
}>;
|
|
67
|
+
export type SkillSource = z.infer<typeof SkillSourceSchema>;
|
|
68
|
+
/**
|
|
69
|
+
* Full skill object with instructions and resources.
|
|
70
|
+
*/
|
|
71
|
+
export declare const SkillSchema: z.ZodObject<{
|
|
72
|
+
metadata: z.ZodObject<{
|
|
73
|
+
name: z.ZodString;
|
|
74
|
+
description: z.ZodString;
|
|
75
|
+
version: z.ZodOptional<z.ZodString>;
|
|
76
|
+
license: z.ZodOptional<z.ZodString>;
|
|
77
|
+
author: z.ZodOptional<z.ZodString>;
|
|
78
|
+
repository: z.ZodOptional<z.ZodString>;
|
|
79
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
80
|
+
compatibility: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
81
|
+
openai: "openai";
|
|
82
|
+
anthropic: "anthropic";
|
|
83
|
+
"claude-code": "claude-code";
|
|
84
|
+
cursor: "cursor";
|
|
85
|
+
windsurf: "windsurf";
|
|
86
|
+
cline: "cline";
|
|
87
|
+
copilot: "copilot";
|
|
88
|
+
universal: "universal";
|
|
89
|
+
}>>>;
|
|
90
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
91
|
+
minContextWindow: z.ZodOptional<z.ZodNumber>;
|
|
92
|
+
requiresApproval: z.ZodOptional<z.ZodBoolean>;
|
|
93
|
+
}, z.core.$strip>;
|
|
94
|
+
instructions: z.ZodString;
|
|
95
|
+
sourcePath: z.ZodString;
|
|
96
|
+
scope: z.ZodEnum<{
|
|
97
|
+
global: "global";
|
|
98
|
+
local: "local";
|
|
99
|
+
}>;
|
|
100
|
+
source: z.ZodOptional<z.ZodEnum<{
|
|
101
|
+
github: "github";
|
|
102
|
+
local: "local";
|
|
103
|
+
vercel: "vercel";
|
|
104
|
+
}>>;
|
|
105
|
+
sourceIdentifier: z.ZodOptional<z.ZodString>;
|
|
106
|
+
resources: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
107
|
+
path: z.ZodString;
|
|
108
|
+
type: z.ZodEnum<{
|
|
109
|
+
template: "template";
|
|
110
|
+
schema: "schema";
|
|
111
|
+
script: "script";
|
|
112
|
+
reference: "reference";
|
|
113
|
+
asset: "asset";
|
|
114
|
+
}>;
|
|
115
|
+
content: z.ZodOptional<z.ZodString>;
|
|
116
|
+
}, z.core.$strip>>>;
|
|
117
|
+
embedding: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
118
|
+
installedAt: z.ZodOptional<z.ZodString>;
|
|
119
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
120
|
+
}, z.core.$strip>;
|
|
121
|
+
export type Skill = z.infer<typeof SkillSchema>;
|
|
122
|
+
/**
|
|
123
|
+
* Skill activation context - information needed to determine which skills to activate.
|
|
124
|
+
*/
|
|
125
|
+
export declare const SkillActivationContextSchema: z.ZodObject<{
|
|
126
|
+
taskDescription: z.ZodOptional<z.ZodString>;
|
|
127
|
+
explicitSkills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
128
|
+
currentFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
129
|
+
projectType: z.ZodOptional<z.ZodString>;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
export type SkillActivationContext = z.infer<typeof SkillActivationContextSchema>;
|
|
132
|
+
/**
|
|
133
|
+
* Result of skill activation.
|
|
134
|
+
*/
|
|
135
|
+
export declare const SkillActivationResultSchema: z.ZodObject<{
|
|
136
|
+
activatedSkills: z.ZodArray<z.ZodObject<{
|
|
137
|
+
metadata: z.ZodObject<{
|
|
138
|
+
name: z.ZodString;
|
|
139
|
+
description: z.ZodString;
|
|
140
|
+
version: z.ZodOptional<z.ZodString>;
|
|
141
|
+
license: z.ZodOptional<z.ZodString>;
|
|
142
|
+
author: z.ZodOptional<z.ZodString>;
|
|
143
|
+
repository: z.ZodOptional<z.ZodString>;
|
|
144
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
145
|
+
compatibility: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
146
|
+
openai: "openai";
|
|
147
|
+
anthropic: "anthropic";
|
|
148
|
+
"claude-code": "claude-code";
|
|
149
|
+
cursor: "cursor";
|
|
150
|
+
windsurf: "windsurf";
|
|
151
|
+
cline: "cline";
|
|
152
|
+
copilot: "copilot";
|
|
153
|
+
universal: "universal";
|
|
154
|
+
}>>>;
|
|
155
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
156
|
+
minContextWindow: z.ZodOptional<z.ZodNumber>;
|
|
157
|
+
requiresApproval: z.ZodOptional<z.ZodBoolean>;
|
|
158
|
+
}, z.core.$strip>;
|
|
159
|
+
instructions: z.ZodString;
|
|
160
|
+
sourcePath: z.ZodString;
|
|
161
|
+
scope: z.ZodEnum<{
|
|
162
|
+
global: "global";
|
|
163
|
+
local: "local";
|
|
164
|
+
}>;
|
|
165
|
+
source: z.ZodOptional<z.ZodEnum<{
|
|
166
|
+
github: "github";
|
|
167
|
+
local: "local";
|
|
168
|
+
vercel: "vercel";
|
|
169
|
+
}>>;
|
|
170
|
+
sourceIdentifier: z.ZodOptional<z.ZodString>;
|
|
171
|
+
resources: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
172
|
+
path: z.ZodString;
|
|
173
|
+
type: z.ZodEnum<{
|
|
174
|
+
template: "template";
|
|
175
|
+
schema: "schema";
|
|
176
|
+
script: "script";
|
|
177
|
+
reference: "reference";
|
|
178
|
+
asset: "asset";
|
|
179
|
+
}>;
|
|
180
|
+
content: z.ZodOptional<z.ZodString>;
|
|
181
|
+
}, z.core.$strip>>>;
|
|
182
|
+
embedding: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
183
|
+
installedAt: z.ZodOptional<z.ZodString>;
|
|
184
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
185
|
+
}, z.core.$strip>>;
|
|
186
|
+
activationReasons: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
187
|
+
type: z.ZodEnum<{
|
|
188
|
+
semantic: "semantic";
|
|
189
|
+
explicit: "explicit";
|
|
190
|
+
"file-match": "file-match";
|
|
191
|
+
"project-type": "project-type";
|
|
192
|
+
}>;
|
|
193
|
+
score: z.ZodOptional<z.ZodNumber>;
|
|
194
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
195
|
+
}, z.core.$strip>>;
|
|
196
|
+
}, z.core.$strip>;
|
|
197
|
+
export type SkillActivationResult = z.infer<typeof SkillActivationResultSchema>;
|
|
198
|
+
/**
|
|
199
|
+
* Parsed allowed-tools specification.
|
|
200
|
+
*/
|
|
201
|
+
export interface ParsedAllowedTool {
|
|
202
|
+
name: string;
|
|
203
|
+
filter?: {
|
|
204
|
+
pattern: string;
|
|
205
|
+
type: 'prefix' | 'glob' | 'exact';
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Parse an allowed-tools string like "Bash(git:*)" into structured form.
|
|
210
|
+
*/
|
|
211
|
+
export declare function parseAllowedTool(spec: string): ParsedAllowedTool;
|
|
212
|
+
/**
|
|
213
|
+
* Check if a command matches an allowed-tool filter.
|
|
214
|
+
*/
|
|
215
|
+
export declare function matchesAllowedTool(toolName: string, command: string, allowed: ParsedAllowedTool): boolean;
|
|
216
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE1B;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;mBAM5B,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;iBA8C9B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAS9B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;EAAwC,CAAA;AACtE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8BtB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;iBAYvC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEjF;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAatC,CAAA;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAE/E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;KAClC,CAAA;CACF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA6BhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAwBT"}
|