@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,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel Skills Catalog
|
|
3
|
+
*
|
|
4
|
+
* Fetch and cache the skills.sh catalog for discovery.
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'node:fs';
|
|
7
|
+
import * as os from 'node:os';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import { logger } from '@revealui/core/observability/logger';
|
|
10
|
+
/**
|
|
11
|
+
* Get the default cache directory.
|
|
12
|
+
*/
|
|
13
|
+
function getDefaultCacheDir() {
|
|
14
|
+
return path.join(os.homedir(), '.revealui', 'cache');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get the catalog cache file path.
|
|
18
|
+
*/
|
|
19
|
+
function getCatalogCachePath(cacheDir) {
|
|
20
|
+
const dir = cacheDir ?? getDefaultCacheDir();
|
|
21
|
+
return path.join(dir, 'vercel-catalog.json');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Fetch the Vercel Skills catalog.
|
|
25
|
+
*
|
|
26
|
+
* This function fetches the catalog from skills.sh (or a known GitHub source)
|
|
27
|
+
* and caches it locally. The cache is invalidated after 24 hours by default.
|
|
28
|
+
*
|
|
29
|
+
* @param config - Configuration options
|
|
30
|
+
* @returns The catalog of available skills
|
|
31
|
+
*/
|
|
32
|
+
export async function fetchVercelCatalog(config = {}) {
|
|
33
|
+
const cachePath = getCatalogCachePath(config.cacheDir);
|
|
34
|
+
const cacheTtl = config.cacheTtl ?? 24 * 60 * 60 * 1000; // 24 hours
|
|
35
|
+
// Try to load from cache if not forcing refresh
|
|
36
|
+
if (!config.forceRefresh) {
|
|
37
|
+
try {
|
|
38
|
+
const cached = loadFromCache(cachePath, cacheTtl);
|
|
39
|
+
if (cached) {
|
|
40
|
+
return cached;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// Ignore cache errors, fetch fresh
|
|
45
|
+
logger.warn('Error loading catalog cache', {
|
|
46
|
+
error: error instanceof Error ? error.message : String(error),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Fetch fresh catalog
|
|
51
|
+
const catalog = await fetchFreshCatalog();
|
|
52
|
+
// Save to cache
|
|
53
|
+
try {
|
|
54
|
+
saveToCache(cachePath, catalog);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logger.warn('Error saving catalog cache', {
|
|
58
|
+
error: error instanceof Error ? error.message : String(error),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return catalog;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Load catalog from cache if valid.
|
|
65
|
+
*/
|
|
66
|
+
function loadFromCache(cachePath, ttl) {
|
|
67
|
+
if (!fs.existsSync(cachePath)) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const stats = fs.statSync(cachePath);
|
|
71
|
+
const age = Date.now() - stats.mtimeMs;
|
|
72
|
+
if (age > ttl) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const content = fs.readFileSync(cachePath, 'utf-8');
|
|
76
|
+
return JSON.parse(content);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Save catalog to cache.
|
|
80
|
+
*/
|
|
81
|
+
function saveToCache(cachePath, catalog) {
|
|
82
|
+
const dir = path.dirname(cachePath);
|
|
83
|
+
if (!fs.existsSync(dir)) {
|
|
84
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
85
|
+
}
|
|
86
|
+
fs.writeFileSync(cachePath, JSON.stringify(catalog, null, 2), 'utf-8');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Fetch fresh catalog from Vercel Skills ecosystem.
|
|
90
|
+
*
|
|
91
|
+
* Since skills.sh doesn't have a public API yet, we'll fetch from known sources:
|
|
92
|
+
* 1. vercel-labs/agent-skills repository (official Vercel skills)
|
|
93
|
+
* 2. Community aggregated lists
|
|
94
|
+
*/
|
|
95
|
+
async function fetchFreshCatalog() {
|
|
96
|
+
// For now, we'll create a curated list of known Vercel skills
|
|
97
|
+
// In the future, this could fetch from a public API
|
|
98
|
+
const skills = [
|
|
99
|
+
{
|
|
100
|
+
id: 'vercel-labs/agent-skills/react-best-practices',
|
|
101
|
+
name: 'react-best-practices',
|
|
102
|
+
owner: 'vercel-labs',
|
|
103
|
+
repo: 'agent-skills',
|
|
104
|
+
path: 'skills/react-best-practices',
|
|
105
|
+
description: 'React optimization patterns and best practices from Vercel Engineering',
|
|
106
|
+
installs: 81700,
|
|
107
|
+
tags: ['react', 'optimization', 'best-practices'],
|
|
108
|
+
compatibility: ['claude-code', 'cursor', 'copilot'],
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'vercel-labs/agent-skills/web-design-guidelines',
|
|
112
|
+
name: 'web-design-guidelines',
|
|
113
|
+
owner: 'vercel-labs',
|
|
114
|
+
repo: 'agent-skills',
|
|
115
|
+
path: 'skills/web-design-guidelines',
|
|
116
|
+
description: '100+ accessibility and performance rules for web design',
|
|
117
|
+
installs: 61900,
|
|
118
|
+
tags: ['design', 'accessibility', 'performance'],
|
|
119
|
+
compatibility: ['universal'],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: 'vercel-labs/agent-skills/find-skills',
|
|
123
|
+
name: 'find-skills',
|
|
124
|
+
owner: 'vercel-labs',
|
|
125
|
+
repo: 'agent-skills',
|
|
126
|
+
path: 'skills/find-skills',
|
|
127
|
+
description: 'Meta-skill for discovering other skills',
|
|
128
|
+
installs: 78800,
|
|
129
|
+
tags: ['discovery', 'meta'],
|
|
130
|
+
compatibility: ['universal'],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: 'vercel-labs/agent-skills/nextjs-best-practices',
|
|
134
|
+
name: 'nextjs-best-practices',
|
|
135
|
+
owner: 'vercel-labs',
|
|
136
|
+
repo: 'agent-skills',
|
|
137
|
+
path: 'skills/nextjs-best-practices',
|
|
138
|
+
description: 'Next.js App Router best practices and optimization patterns',
|
|
139
|
+
installs: 45200,
|
|
140
|
+
tags: ['nextjs', 'react', 'best-practices'],
|
|
141
|
+
compatibility: ['claude-code', 'cursor', 'copilot'],
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
id: 'vercel-labs/agent-skills/typescript-patterns',
|
|
145
|
+
name: 'typescript-patterns',
|
|
146
|
+
owner: 'vercel-labs',
|
|
147
|
+
repo: 'agent-skills',
|
|
148
|
+
path: 'skills/typescript-patterns',
|
|
149
|
+
description: 'TypeScript design patterns and type safety best practices',
|
|
150
|
+
installs: 38900,
|
|
151
|
+
tags: ['typescript', 'patterns', 'types'],
|
|
152
|
+
compatibility: ['universal'],
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
const metadata = {
|
|
156
|
+
totalSkills: skills.length,
|
|
157
|
+
fetchedAt: new Date().toISOString(),
|
|
158
|
+
version: '1.0.0',
|
|
159
|
+
};
|
|
160
|
+
return {
|
|
161
|
+
metadata,
|
|
162
|
+
skills,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get trending skills from the catalog (sorted by installs).
|
|
167
|
+
*
|
|
168
|
+
* @param limit - Maximum number of skills to return
|
|
169
|
+
* @param config - Catalog configuration
|
|
170
|
+
* @returns Trending skills
|
|
171
|
+
*/
|
|
172
|
+
export async function getTrendingSkills(limit = 10, config = {}) {
|
|
173
|
+
const catalog = await fetchVercelCatalog(config);
|
|
174
|
+
return catalog.skills
|
|
175
|
+
.filter((skill) => skill.installs !== undefined)
|
|
176
|
+
.sort((a, b) => (b.installs ?? 0) - (a.installs ?? 0))
|
|
177
|
+
.slice(0, limit);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Clear the catalog cache.
|
|
181
|
+
*
|
|
182
|
+
* @param cacheDir - Cache directory
|
|
183
|
+
*/
|
|
184
|
+
export function clearCatalogCache(cacheDir) {
|
|
185
|
+
const cachePath = getCatalogCachePath(cacheDir);
|
|
186
|
+
if (fs.existsSync(cachePath)) {
|
|
187
|
+
fs.unlinkSync(cachePath);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility and Enhancement Layer
|
|
3
|
+
*
|
|
4
|
+
* Ensure Vercel Skills work seamlessly with RevealUI's enhanced features.
|
|
5
|
+
*/
|
|
6
|
+
export { batchGenerateEmbeddings, enhanceSkillMetadata, generateEmbeddingsForVercelSkill, } from './skill-enhancer.js';
|
|
7
|
+
export { formatAllowedToolsString, isToolSupported, mapRevealUIToolsToVercel, mapVercelToolsToRevealUI, parseAllowedToolsString, REVEALUI_TO_VERCEL, REVEALUI_TOOLS, type RevealUITool, VERCEL_TO_REVEALUI, VERCEL_TOOLS, type VercelTool, } from './tool-mapper.js';
|
|
8
|
+
export { checkVercelCompatibility, normalizeVercelSkill, toVercelFormat, } from './vercel-compat.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skills/compat/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,KAAK,YAAY,EACjB,kBAAkB,EAClB,YAAY,EACZ,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,GACf,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility and Enhancement Layer
|
|
3
|
+
*
|
|
4
|
+
* Ensure Vercel Skills work seamlessly with RevealUI's enhanced features.
|
|
5
|
+
*/
|
|
6
|
+
export { batchGenerateEmbeddings, enhanceSkillMetadata, generateEmbeddingsForVercelSkill, } from './skill-enhancer.js';
|
|
7
|
+
export { formatAllowedToolsString, isToolSupported, mapRevealUIToolsToVercel, mapVercelToolsToRevealUI, parseAllowedToolsString, REVEALUI_TO_VERCEL, REVEALUI_TOOLS, VERCEL_TO_REVEALUI, VERCEL_TOOLS, } from './tool-mapper.js';
|
|
8
|
+
export { checkVercelCompatibility, normalizeVercelSkill, toVercelFormat, } from './vercel-compat.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Enhancer
|
|
3
|
+
*
|
|
4
|
+
* Add RevealUI-specific enhancements to Vercel skills.
|
|
5
|
+
*/
|
|
6
|
+
import type { Skill } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Generate embeddings for a Vercel skill.
|
|
9
|
+
*
|
|
10
|
+
* Vercel skills don't have embeddings by default, but RevealUI uses them
|
|
11
|
+
* for semantic search. This function adds that capability.
|
|
12
|
+
*
|
|
13
|
+
* @param skill - Skill to enhance
|
|
14
|
+
* @returns Skill with embedding
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateEmbeddingsForVercelSkill(skill: Skill): Promise<Skill>;
|
|
17
|
+
/**
|
|
18
|
+
* Enhance multiple skills with embeddings.
|
|
19
|
+
*
|
|
20
|
+
* @param skills - Skills to enhance
|
|
21
|
+
* @param concurrency - Number of concurrent embedding generations
|
|
22
|
+
* @returns Enhanced skills
|
|
23
|
+
*/
|
|
24
|
+
export declare function batchGenerateEmbeddings(skills: Skill[], concurrency?: number): Promise<Skill[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Enhance a skill with additional metadata.
|
|
27
|
+
*
|
|
28
|
+
* @param skill - Skill to enhance
|
|
29
|
+
* @param enhancements - Additional metadata to add
|
|
30
|
+
* @returns Enhanced skill
|
|
31
|
+
*/
|
|
32
|
+
export declare function enhanceSkillMetadata(skill: Skill, enhancements: {
|
|
33
|
+
tags?: string[];
|
|
34
|
+
compatibility?: Array<'claude-code' | 'cursor' | 'windsurf' | 'cline' | 'copilot' | 'openai' | 'anthropic' | 'universal'>;
|
|
35
|
+
minContextWindow?: number;
|
|
36
|
+
}): Skill;
|
|
37
|
+
//# sourceMappingURL=skill-enhancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-enhancer.d.ts","sourceRoot":"","sources":["../../../src/skills/compat/skill-enhancer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC;;;;;;;;GAQG;AACH,wBAAsB,gCAAgC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAuBnF;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,SAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAahG;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,KAAK,CACjB,aAAa,GACb,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,GACT,QAAQ,GACR,WAAW,GACX,WAAW,CACd,CAAA;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,GACA,KAAK,CAmBP"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Enhancer
|
|
3
|
+
*
|
|
4
|
+
* Add RevealUI-specific enhancements to Vercel skills.
|
|
5
|
+
*/
|
|
6
|
+
import { generateEmbedding } from '../../embeddings/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Generate embeddings for a Vercel skill.
|
|
9
|
+
*
|
|
10
|
+
* Vercel skills don't have embeddings by default, but RevealUI uses them
|
|
11
|
+
* for semantic search. This function adds that capability.
|
|
12
|
+
*
|
|
13
|
+
* @param skill - Skill to enhance
|
|
14
|
+
* @returns Skill with embedding
|
|
15
|
+
*/
|
|
16
|
+
export async function generateEmbeddingsForVercelSkill(skill) {
|
|
17
|
+
// Skip if already has embedding
|
|
18
|
+
if (skill.embedding) {
|
|
19
|
+
return skill;
|
|
20
|
+
}
|
|
21
|
+
// Create text representation for embedding
|
|
22
|
+
const textForEmbedding = [
|
|
23
|
+
skill.metadata.name,
|
|
24
|
+
skill.metadata.description,
|
|
25
|
+
skill.metadata.tags?.join(' ') ?? '',
|
|
26
|
+
skill.instructions.slice(0, 1000), // First 1000 chars of instructions
|
|
27
|
+
]
|
|
28
|
+
.filter(Boolean)
|
|
29
|
+
.join('\n');
|
|
30
|
+
// Generate embedding
|
|
31
|
+
const result = await generateEmbedding(textForEmbedding);
|
|
32
|
+
return {
|
|
33
|
+
...skill,
|
|
34
|
+
embedding: result.vector,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Enhance multiple skills with embeddings.
|
|
39
|
+
*
|
|
40
|
+
* @param skills - Skills to enhance
|
|
41
|
+
* @param concurrency - Number of concurrent embedding generations
|
|
42
|
+
* @returns Enhanced skills
|
|
43
|
+
*/
|
|
44
|
+
export async function batchGenerateEmbeddings(skills, concurrency = 5) {
|
|
45
|
+
const enhanced = [];
|
|
46
|
+
// Process in batches
|
|
47
|
+
for (let i = 0; i < skills.length; i += concurrency) {
|
|
48
|
+
const batch = skills.slice(i, i + concurrency);
|
|
49
|
+
const enhancedBatch = await Promise.all(batch.map((skill) => generateEmbeddingsForVercelSkill(skill)));
|
|
50
|
+
enhanced.push(...enhancedBatch);
|
|
51
|
+
}
|
|
52
|
+
return enhanced;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Enhance a skill with additional metadata.
|
|
56
|
+
*
|
|
57
|
+
* @param skill - Skill to enhance
|
|
58
|
+
* @param enhancements - Additional metadata to add
|
|
59
|
+
* @returns Enhanced skill
|
|
60
|
+
*/
|
|
61
|
+
export function enhanceSkillMetadata(skill, enhancements) {
|
|
62
|
+
const enhanced = { ...skill };
|
|
63
|
+
if (enhancements.tags) {
|
|
64
|
+
enhanced.metadata.tags = [...(enhanced.metadata.tags ?? []), ...enhancements.tags];
|
|
65
|
+
}
|
|
66
|
+
if (enhancements.compatibility) {
|
|
67
|
+
enhanced.metadata.compatibility = [
|
|
68
|
+
...(enhanced.metadata.compatibility ?? []),
|
|
69
|
+
...enhancements.compatibility,
|
|
70
|
+
];
|
|
71
|
+
}
|
|
72
|
+
if (enhancements.minContextWindow !== undefined) {
|
|
73
|
+
enhanced.metadata.minContextWindow = enhancements.minContextWindow;
|
|
74
|
+
}
|
|
75
|
+
return enhanced;
|
|
76
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Mapper
|
|
3
|
+
*
|
|
4
|
+
* Map allowed-tools between Vercel and RevealUI formats.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Vercel Skills CLI tool names.
|
|
8
|
+
*/
|
|
9
|
+
export declare const VERCEL_TOOLS: readonly ["bash", "read", "write", "edit", "glob", "grep", "web-fetch", "web-search", "ask-user"];
|
|
10
|
+
export type VercelTool = (typeof VERCEL_TOOLS)[number];
|
|
11
|
+
/**
|
|
12
|
+
* RevealUI tool names.
|
|
13
|
+
*/
|
|
14
|
+
export declare const REVEALUI_TOOLS: readonly ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "WebFetch", "WebSearch", "AskUserQuestion"];
|
|
15
|
+
export type RevealUITool = (typeof REVEALUI_TOOLS)[number];
|
|
16
|
+
/**
|
|
17
|
+
* Mapping from Vercel tool names to RevealUI tool names.
|
|
18
|
+
*/
|
|
19
|
+
export declare const VERCEL_TO_REVEALUI: Record<VercelTool, RevealUITool>;
|
|
20
|
+
/**
|
|
21
|
+
* Mapping from RevealUI tool names to Vercel tool names.
|
|
22
|
+
*/
|
|
23
|
+
export declare const REVEALUI_TO_VERCEL: Record<RevealUITool, VercelTool>;
|
|
24
|
+
/**
|
|
25
|
+
* Convert Vercel allowed-tools to RevealUI format.
|
|
26
|
+
*
|
|
27
|
+
* @param vercelTools - Array of Vercel tool specifications
|
|
28
|
+
* @returns Array of RevealUI tool specifications
|
|
29
|
+
*/
|
|
30
|
+
export declare function mapVercelToolsToRevealUI(vercelTools: string[]): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Convert RevealUI allowed-tools to Vercel format.
|
|
33
|
+
*
|
|
34
|
+
* @param revealuiTools - Array of RevealUI tool specifications
|
|
35
|
+
* @returns Array of Vercel tool specifications
|
|
36
|
+
*/
|
|
37
|
+
export declare function mapRevealUIToolsToVercel(revealuiTools: string[]): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Check if a tool is supported by both Vercel and RevealUI.
|
|
40
|
+
*
|
|
41
|
+
* @param tool - Tool name (either format)
|
|
42
|
+
* @returns true if supported
|
|
43
|
+
*/
|
|
44
|
+
export declare function isToolSupported(tool: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Parse an allowed-tools string (space-separated) into array.
|
|
47
|
+
*
|
|
48
|
+
* Handles tool specifications like "bash(git:*) read write".
|
|
49
|
+
*
|
|
50
|
+
* @param toolsString - Space-separated tool specifications
|
|
51
|
+
* @returns Array of tool specifications
|
|
52
|
+
*/
|
|
53
|
+
export declare function parseAllowedToolsString(toolsString: string): string[];
|
|
54
|
+
/**
|
|
55
|
+
* Convert array of tool specifications to space-separated string.
|
|
56
|
+
*
|
|
57
|
+
* @param tools - Array of tool specifications
|
|
58
|
+
* @returns Space-separated tool specifications
|
|
59
|
+
*/
|
|
60
|
+
export declare function formatAllowedToolsString(tools: string[]): string;
|
|
61
|
+
//# sourceMappingURL=tool-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-mapper.d.ts","sourceRoot":"","sources":["../../../src/skills/compat/tool-mapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY,mGAUf,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,cAAc,wGAUjB,CAAA;AAEV,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAU/D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU,CAU/D,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAiBxE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAiB1E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASrD;AASD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CA2BrE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Mapper
|
|
3
|
+
*
|
|
4
|
+
* Map allowed-tools between Vercel and RevealUI formats.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Vercel Skills CLI tool names.
|
|
8
|
+
*/
|
|
9
|
+
export const VERCEL_TOOLS = [
|
|
10
|
+
'bash',
|
|
11
|
+
'read',
|
|
12
|
+
'write',
|
|
13
|
+
'edit',
|
|
14
|
+
'glob',
|
|
15
|
+
'grep',
|
|
16
|
+
'web-fetch',
|
|
17
|
+
'web-search',
|
|
18
|
+
'ask-user',
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* RevealUI tool names.
|
|
22
|
+
*/
|
|
23
|
+
export const REVEALUI_TOOLS = [
|
|
24
|
+
'Bash',
|
|
25
|
+
'Read',
|
|
26
|
+
'Write',
|
|
27
|
+
'Edit',
|
|
28
|
+
'Glob',
|
|
29
|
+
'Grep',
|
|
30
|
+
'WebFetch',
|
|
31
|
+
'WebSearch',
|
|
32
|
+
'AskUserQuestion',
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* Mapping from Vercel tool names to RevealUI tool names.
|
|
36
|
+
*/
|
|
37
|
+
export const VERCEL_TO_REVEALUI = {
|
|
38
|
+
bash: 'Bash',
|
|
39
|
+
read: 'Read',
|
|
40
|
+
write: 'Write',
|
|
41
|
+
edit: 'Edit',
|
|
42
|
+
glob: 'Glob',
|
|
43
|
+
grep: 'Grep',
|
|
44
|
+
'web-fetch': 'WebFetch',
|
|
45
|
+
'web-search': 'WebSearch',
|
|
46
|
+
'ask-user': 'AskUserQuestion',
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Mapping from RevealUI tool names to Vercel tool names.
|
|
50
|
+
*/
|
|
51
|
+
export const REVEALUI_TO_VERCEL = {
|
|
52
|
+
Bash: 'bash',
|
|
53
|
+
Read: 'read',
|
|
54
|
+
Write: 'write',
|
|
55
|
+
Edit: 'edit',
|
|
56
|
+
Glob: 'glob',
|
|
57
|
+
Grep: 'grep',
|
|
58
|
+
WebFetch: 'web-fetch',
|
|
59
|
+
WebSearch: 'web-search',
|
|
60
|
+
AskUserQuestion: 'ask-user',
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Convert Vercel allowed-tools to RevealUI format.
|
|
64
|
+
*
|
|
65
|
+
* @param vercelTools - Array of Vercel tool specifications
|
|
66
|
+
* @returns Array of RevealUI tool specifications
|
|
67
|
+
*/
|
|
68
|
+
export function mapVercelToolsToRevealUI(vercelTools) {
|
|
69
|
+
return vercelTools.map((tool) => {
|
|
70
|
+
// Extract tool name and filter
|
|
71
|
+
const match = tool.match(/^([^(]+)(\(.*\))?$/);
|
|
72
|
+
if (!match) {
|
|
73
|
+
return tool;
|
|
74
|
+
}
|
|
75
|
+
const [, toolName, filter] = match;
|
|
76
|
+
const name = toolName?.trim().toLowerCase();
|
|
77
|
+
// Map to RevealUI tool name
|
|
78
|
+
const mappedName = VERCEL_TO_REVEALUI[name] ?? capitalize(name);
|
|
79
|
+
// Reconstruct with filter if present
|
|
80
|
+
return filter ? `${mappedName}${filter}` : mappedName;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Convert RevealUI allowed-tools to Vercel format.
|
|
85
|
+
*
|
|
86
|
+
* @param revealuiTools - Array of RevealUI tool specifications
|
|
87
|
+
* @returns Array of Vercel tool specifications
|
|
88
|
+
*/
|
|
89
|
+
export function mapRevealUIToolsToVercel(revealuiTools) {
|
|
90
|
+
return revealuiTools.map((tool) => {
|
|
91
|
+
// Extract tool name and filter
|
|
92
|
+
const match = tool.match(/^([^(]+)(\(.*\))?$/);
|
|
93
|
+
if (!match) {
|
|
94
|
+
return tool.toLowerCase();
|
|
95
|
+
}
|
|
96
|
+
const [, toolName, filter] = match;
|
|
97
|
+
const name = toolName?.trim();
|
|
98
|
+
// Map to Vercel tool name
|
|
99
|
+
const mappedName = REVEALUI_TO_VERCEL[name] ?? toolName?.toLowerCase() ?? '';
|
|
100
|
+
// Reconstruct with filter if present
|
|
101
|
+
return filter ? `${mappedName}${filter}` : mappedName;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Check if a tool is supported by both Vercel and RevealUI.
|
|
106
|
+
*
|
|
107
|
+
* @param tool - Tool name (either format)
|
|
108
|
+
* @returns true if supported
|
|
109
|
+
*/
|
|
110
|
+
export function isToolSupported(tool) {
|
|
111
|
+
const normalizedTool = tool
|
|
112
|
+
.toLowerCase()
|
|
113
|
+
.replace(/\(.*\)/, '')
|
|
114
|
+
.trim();
|
|
115
|
+
return (VERCEL_TOOLS.includes(normalizedTool) ||
|
|
116
|
+
REVEALUI_TOOLS.some((t) => t.toLowerCase() === normalizedTool));
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Capitalize first letter of a string.
|
|
120
|
+
*/
|
|
121
|
+
function capitalize(str) {
|
|
122
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Parse an allowed-tools string (space-separated) into array.
|
|
126
|
+
*
|
|
127
|
+
* Handles tool specifications like "bash(git:*) read write".
|
|
128
|
+
*
|
|
129
|
+
* @param toolsString - Space-separated tool specifications
|
|
130
|
+
* @returns Array of tool specifications
|
|
131
|
+
*/
|
|
132
|
+
export function parseAllowedToolsString(toolsString) {
|
|
133
|
+
const tools = [];
|
|
134
|
+
let current = '';
|
|
135
|
+
let parenDepth = 0;
|
|
136
|
+
for (const char of toolsString) {
|
|
137
|
+
if (char === '(') {
|
|
138
|
+
parenDepth++;
|
|
139
|
+
current += char;
|
|
140
|
+
}
|
|
141
|
+
else if (char === ')') {
|
|
142
|
+
parenDepth--;
|
|
143
|
+
current += char;
|
|
144
|
+
}
|
|
145
|
+
else if (char === ' ' && parenDepth === 0) {
|
|
146
|
+
if (current.trim()) {
|
|
147
|
+
tools.push(current.trim());
|
|
148
|
+
}
|
|
149
|
+
current = '';
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
current += char;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (current.trim()) {
|
|
156
|
+
tools.push(current.trim());
|
|
157
|
+
}
|
|
158
|
+
return tools;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Convert array of tool specifications to space-separated string.
|
|
162
|
+
*
|
|
163
|
+
* @param tools - Array of tool specifications
|
|
164
|
+
* @returns Space-separated tool specifications
|
|
165
|
+
*/
|
|
166
|
+
export function formatAllowedToolsString(tools) {
|
|
167
|
+
return tools.join(' ');
|
|
168
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel Skills Compatibility Layer
|
|
3
|
+
*
|
|
4
|
+
* Ensures Vercel Skills work seamlessly with RevealUI's skill system.
|
|
5
|
+
*/
|
|
6
|
+
import type { Skill, SkillMetadata } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Check if a skill from Vercel is compatible with RevealUI.
|
|
9
|
+
*
|
|
10
|
+
* @param skill - Skill to check
|
|
11
|
+
* @returns true if compatible, error message if not
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkVercelCompatibility(skill: Skill): true | string;
|
|
14
|
+
/**
|
|
15
|
+
* Normalize a Vercel skill to RevealUI format.
|
|
16
|
+
*
|
|
17
|
+
* Some Vercel skills may use different conventions or formats.
|
|
18
|
+
* This function ensures they work with RevealUI's expectations.
|
|
19
|
+
*
|
|
20
|
+
* @param skill - Skill to normalize
|
|
21
|
+
* @returns Normalized skill
|
|
22
|
+
*/
|
|
23
|
+
export declare function normalizeVercelSkill(skill: Skill): Skill;
|
|
24
|
+
/**
|
|
25
|
+
* Convert RevealUI skill metadata to Vercel format.
|
|
26
|
+
*
|
|
27
|
+
* Useful if we want to export RevealUI skills to the Vercel ecosystem.
|
|
28
|
+
*
|
|
29
|
+
* @param metadata - RevealUI skill metadata
|
|
30
|
+
* @returns Vercel-compatible metadata
|
|
31
|
+
*/
|
|
32
|
+
export declare function toVercelFormat(metadata: SkillMetadata): Record<string, unknown>;
|
|
33
|
+
//# sourceMappingURL=vercel-compat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-compat.d.ts","sourceRoot":"","sources":["../../../src/skills/compat/vercel-compat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEvD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAuBpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAiBxD;AAoDD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoC/E"}
|