@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,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SKILL.md Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses SKILL.md files to extract YAML frontmatter and markdown instructions.
|
|
5
|
+
*/
|
|
6
|
+
import { SkillMetadataSchema } from '../types.js';
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Minimal YAML parser/stringifier — replaces the `yaml` package.
|
|
9
|
+
// Handles the flat key-value + block-sequence subset used in SKILL.md files.
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
function yamlParseScalar(s) {
|
|
12
|
+
if ((s.startsWith('"') && s.endsWith('"')) || (s.startsWith("'") && s.endsWith("'"))) {
|
|
13
|
+
return s.slice(1, -1);
|
|
14
|
+
}
|
|
15
|
+
if (s === 'true')
|
|
16
|
+
return true;
|
|
17
|
+
if (s === 'false')
|
|
18
|
+
return false;
|
|
19
|
+
if (s === 'null' || s === '~')
|
|
20
|
+
return null;
|
|
21
|
+
if (/^-?\d+$/.test(s))
|
|
22
|
+
return Number(s);
|
|
23
|
+
if (/^-?\d+\.\d+$/.test(s))
|
|
24
|
+
return Number(s);
|
|
25
|
+
return s;
|
|
26
|
+
}
|
|
27
|
+
function yamlParseString(s) {
|
|
28
|
+
if ((s.startsWith('"') && s.endsWith('"')) || (s.startsWith("'") && s.endsWith("'"))) {
|
|
29
|
+
return s.slice(1, -1);
|
|
30
|
+
}
|
|
31
|
+
return s;
|
|
32
|
+
}
|
|
33
|
+
function yamlParse(input) {
|
|
34
|
+
const result = {};
|
|
35
|
+
const lines = input.split(/\r?\n/);
|
|
36
|
+
let i = 0;
|
|
37
|
+
while (i < lines.length) {
|
|
38
|
+
const line = lines[i++];
|
|
39
|
+
const trimmed = line.trim();
|
|
40
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
41
|
+
continue;
|
|
42
|
+
const colonIdx = line.indexOf(':');
|
|
43
|
+
if (colonIdx === -1)
|
|
44
|
+
continue;
|
|
45
|
+
const key = line.slice(0, colonIdx).trim();
|
|
46
|
+
const valuePart = line.slice(colonIdx + 1).trim();
|
|
47
|
+
if (valuePart === '') {
|
|
48
|
+
// Inline array: key: [a, b] OR block sequence (items follow indented with `- `)
|
|
49
|
+
const peek = lines[i]?.trim() ?? '';
|
|
50
|
+
if (peek.startsWith('[')) {
|
|
51
|
+
// inline — handled below on next iteration; should not happen in this branch
|
|
52
|
+
}
|
|
53
|
+
const items = [];
|
|
54
|
+
while (i < lines.length) {
|
|
55
|
+
const next = lines[i].trim();
|
|
56
|
+
if (next.startsWith('- ')) {
|
|
57
|
+
items.push(yamlParseString(next.slice(2).trim()));
|
|
58
|
+
i++;
|
|
59
|
+
}
|
|
60
|
+
else if (next === '-') {
|
|
61
|
+
items.push('');
|
|
62
|
+
i++;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (items.length > 0)
|
|
69
|
+
result[key] = items;
|
|
70
|
+
}
|
|
71
|
+
else if (valuePart.startsWith('[') && valuePart.endsWith(']')) {
|
|
72
|
+
result[key] = valuePart
|
|
73
|
+
.slice(1, -1)
|
|
74
|
+
.split(',')
|
|
75
|
+
.map((s) => yamlParseString(s.trim()))
|
|
76
|
+
.filter(Boolean);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
result[key] = yamlParseScalar(valuePart);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
function yamlQuote(s) {
|
|
85
|
+
if (s === '' ||
|
|
86
|
+
s === 'true' ||
|
|
87
|
+
s === 'false' ||
|
|
88
|
+
s === 'null' ||
|
|
89
|
+
/[:#[\]{}&*!|>'"@`]/.test(s) ||
|
|
90
|
+
/^\s|\s$/.test(s) ||
|
|
91
|
+
/^[\d-]/.test(s)) {
|
|
92
|
+
return `"${s.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
93
|
+
}
|
|
94
|
+
return s;
|
|
95
|
+
}
|
|
96
|
+
function yamlStringify(obj, indent = 2) {
|
|
97
|
+
const pad = ' '.repeat(indent);
|
|
98
|
+
const lines = [];
|
|
99
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
100
|
+
if (value === undefined || value === null)
|
|
101
|
+
continue;
|
|
102
|
+
if (Array.isArray(value)) {
|
|
103
|
+
lines.push(`${key}:`);
|
|
104
|
+
for (const item of value) {
|
|
105
|
+
lines.push(`${pad}- ${typeof item === 'string' ? yamlQuote(item) : String(item)}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (typeof value === 'string') {
|
|
109
|
+
lines.push(`${key}: ${yamlQuote(value)}`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
lines.push(`${key}: ${value}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return `${lines.join('\n')}\n`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parse a SKILL.md file content into metadata and instructions.
|
|
119
|
+
*
|
|
120
|
+
* SKILL.md format:
|
|
121
|
+
* ```
|
|
122
|
+
* ---
|
|
123
|
+
* name: skill-name
|
|
124
|
+
* description: What this skill does
|
|
125
|
+
* ---
|
|
126
|
+
*
|
|
127
|
+
* # Instructions
|
|
128
|
+
*
|
|
129
|
+
* Markdown content here...
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @param content - Raw SKILL.md file content
|
|
133
|
+
* @returns Parsed skill metadata and instructions
|
|
134
|
+
* @throws Error if frontmatter is missing or invalid
|
|
135
|
+
*/
|
|
136
|
+
export function parseSkillMd(content) {
|
|
137
|
+
// Extract frontmatter using --- delimiters
|
|
138
|
+
const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)$/);
|
|
139
|
+
if (!frontmatterMatch) {
|
|
140
|
+
throw new Error('SKILL.md must contain YAML frontmatter between --- delimiters');
|
|
141
|
+
}
|
|
142
|
+
const rawFrontmatter = frontmatterMatch[1] ?? '';
|
|
143
|
+
const instructions = frontmatterMatch[2] ?? '';
|
|
144
|
+
// Parse YAML
|
|
145
|
+
let parsedYaml;
|
|
146
|
+
try {
|
|
147
|
+
parsedYaml = yamlParse(rawFrontmatter);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
throw new Error(`Invalid YAML frontmatter: ${error instanceof Error ? error.message : String(error)}`);
|
|
151
|
+
}
|
|
152
|
+
// Normalize allowed-tools field
|
|
153
|
+
if (parsedYaml['allowed-tools'] && !parsedYaml.allowedTools) {
|
|
154
|
+
parsedYaml.allowedTools = parsedYaml['allowed-tools'];
|
|
155
|
+
parsedYaml['allowed-tools'] = undefined;
|
|
156
|
+
}
|
|
157
|
+
// Parse allowed-tools string format: "Bash(git:*) Read Write"
|
|
158
|
+
if (typeof parsedYaml.allowedTools === 'string') {
|
|
159
|
+
parsedYaml.allowedTools = parseAllowedToolsString(parsedYaml.allowedTools);
|
|
160
|
+
}
|
|
161
|
+
// Validate against schema
|
|
162
|
+
const parseResult = SkillMetadataSchema.safeParse(parsedYaml);
|
|
163
|
+
if (!parseResult.success) {
|
|
164
|
+
const errors = parseResult.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);
|
|
165
|
+
throw new Error(`Invalid skill metadata:\n${errors.join('\n')}`);
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
metadata: parseResult.data,
|
|
169
|
+
instructions: instructions.trim(),
|
|
170
|
+
rawFrontmatter,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Parse allowed-tools string format into array.
|
|
175
|
+
*
|
|
176
|
+
* Example: "Bash(git:*) Read Write(*.ts)" -> ["Bash(git:*)", "Read", "Write(*.ts)"]
|
|
177
|
+
*/
|
|
178
|
+
export function parseAllowedToolsString(spec) {
|
|
179
|
+
const tools = [];
|
|
180
|
+
let current = '';
|
|
181
|
+
let parenDepth = 0;
|
|
182
|
+
for (const char of spec) {
|
|
183
|
+
if (char === '(') {
|
|
184
|
+
parenDepth++;
|
|
185
|
+
current += char;
|
|
186
|
+
}
|
|
187
|
+
else if (char === ')') {
|
|
188
|
+
parenDepth--;
|
|
189
|
+
current += char;
|
|
190
|
+
}
|
|
191
|
+
else if (char === ' ' && parenDepth === 0) {
|
|
192
|
+
if (current.trim()) {
|
|
193
|
+
tools.push(current.trim());
|
|
194
|
+
}
|
|
195
|
+
current = '';
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
current += char;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (current.trim()) {
|
|
202
|
+
tools.push(current.trim());
|
|
203
|
+
}
|
|
204
|
+
return tools;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Extract only the metadata from a SKILL.md file (lightweight parsing).
|
|
208
|
+
* Used for loading skill listings without full content.
|
|
209
|
+
*
|
|
210
|
+
* @param content - Raw SKILL.md file content
|
|
211
|
+
* @returns Just the metadata portion
|
|
212
|
+
*/
|
|
213
|
+
export function parseSkillMetadataOnly(content) {
|
|
214
|
+
const result = parseSkillMd(content);
|
|
215
|
+
return result.metadata;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Validate that a string is valid SKILL.md format.
|
|
219
|
+
*
|
|
220
|
+
* @param content - Content to validate
|
|
221
|
+
* @returns true if valid, error message if invalid
|
|
222
|
+
*/
|
|
223
|
+
export function validateSkillMd(content) {
|
|
224
|
+
try {
|
|
225
|
+
parseSkillMd(content);
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
return error instanceof Error ? error.message : String(error);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Generate a SKILL.md file from metadata and instructions.
|
|
234
|
+
*
|
|
235
|
+
* @param metadata - Skill metadata
|
|
236
|
+
* @param instructions - Markdown instructions
|
|
237
|
+
* @returns SKILL.md file content
|
|
238
|
+
*/
|
|
239
|
+
export function generateSkillMd(metadata, instructions) {
|
|
240
|
+
const frontmatter = yamlStringify(metadata);
|
|
241
|
+
return `---\n${frontmatter}---\n\n${instructions}`;
|
|
242
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skills/registry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for managing installed skills.
|
|
5
|
+
* Follows the pattern from tools/registry.ts.
|
|
6
|
+
*/
|
|
7
|
+
import type { Skill, SkillMetadata } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Storage location configuration.
|
|
10
|
+
*/
|
|
11
|
+
export interface SkillStorageConfig {
|
|
12
|
+
/** Global skill directory (default: ~/.revealui/skills/) */
|
|
13
|
+
globalDir?: string;
|
|
14
|
+
/** Project-local skill directory (default: .revealui/skills/) */
|
|
15
|
+
localDir?: string;
|
|
16
|
+
/** Project root for resolving local paths */
|
|
17
|
+
projectRoot?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Skill registry for managing installed skills.
|
|
21
|
+
*/
|
|
22
|
+
export declare class SkillRegistry {
|
|
23
|
+
private skills;
|
|
24
|
+
private metadataCache;
|
|
25
|
+
/** Maps skill name (metadata or directory) to directory path */
|
|
26
|
+
private nameToPath;
|
|
27
|
+
private globalDir;
|
|
28
|
+
private localDir;
|
|
29
|
+
private projectRoot;
|
|
30
|
+
constructor(config?: SkillStorageConfig);
|
|
31
|
+
/**
|
|
32
|
+
* Get the resolved local directory path.
|
|
33
|
+
*/
|
|
34
|
+
private getLocalDirPath;
|
|
35
|
+
/**
|
|
36
|
+
* Register a skill.
|
|
37
|
+
*
|
|
38
|
+
* @throws Error if skill name already registered
|
|
39
|
+
*/
|
|
40
|
+
register(skill: Skill): void;
|
|
41
|
+
/**
|
|
42
|
+
* Unregister a skill by name.
|
|
43
|
+
*/
|
|
44
|
+
unregister(name: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Get a skill by name.
|
|
47
|
+
*/
|
|
48
|
+
get(name: string): Skill | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Check if a skill exists.
|
|
51
|
+
*/
|
|
52
|
+
has(name: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Get all registered skills.
|
|
55
|
+
*/
|
|
56
|
+
getAll(): Skill[];
|
|
57
|
+
/**
|
|
58
|
+
* Get all skill names.
|
|
59
|
+
*/
|
|
60
|
+
getNames(): string[];
|
|
61
|
+
/**
|
|
62
|
+
* Load all skill metadata from disk (lightweight).
|
|
63
|
+
* Only loads frontmatter, not full instructions.
|
|
64
|
+
*/
|
|
65
|
+
loadAllMetadata(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Load metadata from a specific directory.
|
|
68
|
+
*/
|
|
69
|
+
private loadMetadataFromDirectory;
|
|
70
|
+
/**
|
|
71
|
+
* Get all loaded metadata (lightweight listing).
|
|
72
|
+
*/
|
|
73
|
+
getAllMetadata(): SkillMetadata[];
|
|
74
|
+
/**
|
|
75
|
+
* Get metadata for a specific skill.
|
|
76
|
+
*/
|
|
77
|
+
getMetadata(name: string): SkillMetadata | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Load a full skill from disk (including instructions and resources).
|
|
80
|
+
*
|
|
81
|
+
* @param name - Skill name (metadata name or directory name)
|
|
82
|
+
* @param generateEmbed - Whether to generate embedding for the skill
|
|
83
|
+
*/
|
|
84
|
+
loadSkill(name: string, generateEmbed?: boolean): Promise<Skill | undefined>;
|
|
85
|
+
/**
|
|
86
|
+
* Load all skills from disk (full loading).
|
|
87
|
+
*/
|
|
88
|
+
loadAllSkills(generateEmbeddings?: boolean): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Load resources from a skill directory.
|
|
91
|
+
*/
|
|
92
|
+
private loadResources;
|
|
93
|
+
/**
|
|
94
|
+
* Recursively walk a directory.
|
|
95
|
+
*/
|
|
96
|
+
private walkDirectory;
|
|
97
|
+
/**
|
|
98
|
+
* Get install date from directory stats.
|
|
99
|
+
*/
|
|
100
|
+
private getInstallDate;
|
|
101
|
+
/**
|
|
102
|
+
* Search skills by embedding similarity.
|
|
103
|
+
*
|
|
104
|
+
* @param query - Search query text
|
|
105
|
+
* @param threshold - Minimum similarity score (default 0.7)
|
|
106
|
+
* @param limit - Maximum results to return
|
|
107
|
+
*/
|
|
108
|
+
searchByEmbedding(query: string, threshold?: number, limit?: number): Promise<Array<{
|
|
109
|
+
skill: Skill;
|
|
110
|
+
score: number;
|
|
111
|
+
}>>;
|
|
112
|
+
/**
|
|
113
|
+
* Search skills by keyword matching.
|
|
114
|
+
*/
|
|
115
|
+
searchByKeyword(query: string): Skill[];
|
|
116
|
+
/**
|
|
117
|
+
* Get the installation directory for a skill.
|
|
118
|
+
*/
|
|
119
|
+
getSkillDirectory(name: string, scope?: 'local' | 'global'): string;
|
|
120
|
+
/**
|
|
121
|
+
* Ensure a directory exists.
|
|
122
|
+
*/
|
|
123
|
+
ensureDirectory(dir: string): void;
|
|
124
|
+
/**
|
|
125
|
+
* Clear the registry (for testing).
|
|
126
|
+
*/
|
|
127
|
+
clear(): void;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Global skill registry instance.
|
|
131
|
+
*/
|
|
132
|
+
export declare const globalSkillRegistry: SkillRegistry;
|
|
133
|
+
//# sourceMappingURL=skill-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-registry.d.ts","sourceRoot":"","sources":["../../../src/skills/registry/skill-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAiB,MAAM,aAAa,CAAA;AA0BtE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,aAAa,CAAwC;IAC7D,gEAAgE;IAChE,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,WAAW,CAAQ;gBAEf,MAAM,GAAE,kBAAuB;IAM3C;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQ5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIpC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,MAAM,IAAI,KAAK,EAAE;IAIjB;;OAEG;IACH,QAAQ,IAAI,MAAM,EAAE;IAIpB;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAStC;;OAEG;YACW,yBAAyB;IA+BvC;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIpD;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAsEhF;;OAEG;IACG,aAAa,CAAC,kBAAkB,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9D;;OAEG;YACW,aAAa;IA4B3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;;;;;OAMG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,SAAS,SAAM,EACf,KAAK,SAAK,GACT,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA2BlD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE;IAmCvC;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,OAAO,GAAG,QAAkB,GAAG,MAAM;IAO5E;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMlC;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAsB,CAAA"}
|