@sowonai/crewx-sdk 0.1.0-dev.2 → 0.1.0-dev.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +28 -0
  2. package/dist/config/yaml-loader.js +6 -2
  3. package/dist/config/yaml-loader.js.map +1 -1
  4. package/dist/conversation/conversation-history.interface.d.ts +6 -4
  5. package/dist/core/agent/agent-factory.d.ts +7 -7
  6. package/dist/core/agent/agent-factory.js +23 -0
  7. package/dist/core/agent/agent-factory.js.map +1 -1
  8. package/dist/core/agent/agent-runtime.d.ts +18 -2
  9. package/dist/core/agent/agent-runtime.js +128 -24
  10. package/dist/core/agent/agent-runtime.js.map +1 -1
  11. package/dist/core/agent/index.d.ts +1 -1
  12. package/dist/core/agent/index.js +2 -1
  13. package/dist/core/agent/index.js.map +1 -1
  14. package/dist/core/providers/ai-provider.interface.d.ts +1 -0
  15. package/dist/core/providers/ai-provider.interface.js.map +1 -1
  16. package/dist/core/providers/base-ai.provider.d.ts +7 -0
  17. package/dist/core/providers/base-ai.provider.js +8 -4
  18. package/dist/core/providers/base-ai.provider.js.map +1 -1
  19. package/dist/core/providers/dynamic-provider.factory.d.ts +64 -0
  20. package/dist/core/providers/dynamic-provider.factory.js +533 -0
  21. package/dist/core/providers/dynamic-provider.factory.js.map +1 -0
  22. package/dist/core/providers/index.d.ts +3 -0
  23. package/dist/core/providers/index.js +7 -1
  24. package/dist/core/providers/index.js.map +1 -1
  25. package/dist/core/providers/mock.provider.d.ts +13 -0
  26. package/dist/core/providers/mock.provider.js +55 -0
  27. package/dist/core/providers/mock.provider.js.map +1 -0
  28. package/dist/core/providers/provider-factory.d.ts +3 -0
  29. package/dist/core/providers/provider-factory.js +27 -0
  30. package/dist/core/providers/provider-factory.js.map +1 -0
  31. package/dist/index.d.ts +17 -4
  32. package/dist/index.js +31 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/schema/skills-parser.d.ts +8 -0
  35. package/dist/schema/skills-parser.js +421 -0
  36. package/dist/schema/skills-parser.js.map +1 -0
  37. package/dist/schema/skills.types.d.ts +144 -0
  38. package/dist/schema/skills.types.js +41 -0
  39. package/dist/schema/skills.types.js.map +1 -0
  40. package/dist/services/index.d.ts +2 -0
  41. package/dist/services/index.js +19 -0
  42. package/dist/services/index.js.map +1 -0
  43. package/dist/services/layout-loader.service.d.ts +18 -0
  44. package/dist/services/layout-loader.service.js +266 -0
  45. package/dist/services/layout-loader.service.js.map +1 -0
  46. package/dist/services/layout-renderer.service.d.ts +25 -0
  47. package/dist/services/layout-renderer.service.js +226 -0
  48. package/dist/services/layout-renderer.service.js.map +1 -0
  49. package/dist/services/props-validator.service.d.ts +29 -0
  50. package/dist/services/props-validator.service.js +332 -0
  51. package/dist/services/props-validator.service.js.map +1 -0
  52. package/dist/skills/adapter/claude-skill-adapter.d.ts +11 -0
  53. package/dist/skills/adapter/claude-skill-adapter.js +222 -0
  54. package/dist/skills/adapter/claude-skill-adapter.js.map +1 -0
  55. package/dist/skills/index.d.ts +6 -0
  56. package/dist/skills/index.js +31 -0
  57. package/dist/skills/index.js.map +1 -0
  58. package/dist/skills/runtime/progressive-loader.d.ts +27 -0
  59. package/dist/skills/runtime/progressive-loader.js +186 -0
  60. package/dist/skills/runtime/progressive-loader.js.map +1 -0
  61. package/dist/skills/runtime/runtime-requirements-validator.d.ts +23 -0
  62. package/dist/skills/runtime/runtime-requirements-validator.js +248 -0
  63. package/dist/skills/runtime/runtime-requirements-validator.js.map +1 -0
  64. package/dist/skills/runtime/skill-runtime.service.d.ts +42 -0
  65. package/dist/skills/runtime/skill-runtime.service.js +434 -0
  66. package/dist/skills/runtime/skill-runtime.service.js.map +1 -0
  67. package/dist/types/agent.types.d.ts +10 -2
  68. package/dist/types/agent.types.js.map +1 -1
  69. package/dist/types/index.d.ts +3 -0
  70. package/dist/types/index.js +3 -0
  71. package/dist/types/index.js.map +1 -1
  72. package/dist/types/layout.types.d.ts +113 -0
  73. package/dist/types/layout.types.js +22 -0
  74. package/dist/types/layout.types.js.map +1 -0
  75. package/dist/types/provider.types.d.ts +12 -0
  76. package/dist/types/provider.types.js +3 -0
  77. package/dist/types/provider.types.js.map +1 -0
  78. package/dist/types/skill-runtime.types.d.ts +244 -0
  79. package/dist/types/skill-runtime.types.js +44 -0
  80. package/dist/types/skill-runtime.types.js.map +1 -0
  81. package/dist/types/template.types.d.ts +38 -0
  82. package/dist/types/template.types.js +3 -0
  83. package/dist/types/template.types.js.map +1 -0
  84. package/package.json +14 -13
@@ -0,0 +1,3 @@
1
+ import { type AIProvider } from './ai-provider.interface';
2
+ import type { ProviderConfig } from '../../types/provider.types';
3
+ export declare function createProviderFromConfig(config: ProviderConfig): Promise<AIProvider>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProviderFromConfig = createProviderFromConfig;
4
+ const ai_provider_interface_1 = require("./ai-provider.interface");
5
+ const claude_provider_1 = require("./claude.provider");
6
+ const gemini_provider_1 = require("./gemini.provider");
7
+ const copilot_provider_1 = require("./copilot.provider");
8
+ const codex_provider_1 = require("./codex.provider");
9
+ const BUILTIN_PROVIDER_MAP = {
10
+ [ai_provider_interface_1.BuiltInProviders.CLAUDE]: () => new claude_provider_1.ClaudeProvider(),
11
+ [ai_provider_interface_1.BuiltInProviders.GEMINI]: () => new gemini_provider_1.GeminiProvider(),
12
+ [ai_provider_interface_1.BuiltInProviders.COPILOT]: () => new copilot_provider_1.CopilotProvider(),
13
+ [ai_provider_interface_1.BuiltInProviders.CODEX]: () => new codex_provider_1.CodexProvider(),
14
+ };
15
+ async function createProviderFromConfig(config) {
16
+ const key = `${config.namespace}/${config.id}`.toLowerCase();
17
+ const factory = BUILTIN_PROVIDER_MAP[key];
18
+ if (factory) {
19
+ return factory();
20
+ }
21
+ if (config.namespace === 'plugin' || config.namespace === 'remote') {
22
+ throw new Error(`Dynamic provider '${key}' is not supported yet. ` +
23
+ 'Inject an AIProvider instance directly until registry support ships.');
24
+ }
25
+ throw new Error(`Unknown provider '${key}'. Available built-ins: ${Object.keys(BUILTIN_PROVIDER_MAP).join(', ')}`);
26
+ }
27
+ //# sourceMappingURL=provider-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../../../src/core/providers/provider-factory.ts"],"names":[],"mappings":";;AAoBA,4DAkBC;AAtCD,mEAA4E;AAC5E,uDAAmD;AACnD,uDAAmD;AACnD,yDAAqD;AACrD,qDAAiD;AAGjD,MAAM,oBAAoB,GAAqC;IAC7D,CAAC,wCAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,gCAAc,EAAE;IACrD,CAAC,wCAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,gCAAc,EAAE;IACrD,CAAC,wCAAgB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAe,EAAE;IACvD,CAAC,wCAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,8BAAa,EAAE;CACpD,CAAC;AAQK,KAAK,UAAU,wBAAwB,CAAC,MAAsB;IACnE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7D,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAE1C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,qBAAqB,GAAG,0BAA0B;YAChD,sEAAsE,CACzE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CACb,qBAAqB,GAAG,2BAA2B,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClG,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,15 +1,17 @@
1
1
  export { SERVER_NAME, PREFIX_TOOL_NAME, DEFAULT_MAX_FILE_SIZE, DEFAULT_MAX_FILES, } from './constants';
2
2
  export type { TimeoutConfig } from './config/timeout.config';
3
3
  export { getTimeoutConfig, getDefaultTimeoutConfig } from './config/timeout.config';
4
- export type { ConversationMessage, ConversationThread, FetchHistoryOptions, IConversationHistoryProvider, } from './conversation/conversation-history.interface';
4
+ export type { BaseMessage, ConversationMessage, ConversationThread, FetchHistoryOptions, IConversationHistoryProvider, } from './conversation/conversation-history.interface';
5
5
  export type { ConversationConfig } from './conversation/conversation-config';
6
6
  export { DEFAULT_CONVERSATION_CONFIG, getConversationConfig, } from './conversation/conversation-config';
7
7
  export { DocumentManager } from './knowledge/DocumentManager';
8
8
  export { ProviderNamespace, BuiltInProviders, ProviderNotAvailableError, } from './core/providers/ai-provider.interface';
9
9
  export type { ProviderNamespaceType, AIProvider, AIQueryOptions, AIResponse, } from './core/providers/ai-provider.interface';
10
10
  export { BaseAIProvider } from './core/providers/base-ai.provider';
11
- export { ClaudeProvider, GeminiProvider, CopilotProvider, CodexProvider, } from './core/providers';
11
+ export { ClaudeProvider, GeminiProvider, CopilotProvider, CodexProvider, BaseDynamicProviderFactory, MockProvider, createProviderFromConfig, } from './core/providers';
12
12
  export type { BaseAIProviderOptions, LoggerLike, AIProviderConfig, } from './core/providers/base-ai.types';
13
+ export type { PluginProviderConfig, RemoteProviderConfig, DynamicProviderConfig, DynamicProviderFactoryOptions, } from './core/providers/dynamic-provider.factory';
14
+ export type { ProviderConfig, ProviderInput, ProviderResolutionResult, } from './types/provider.types';
13
15
  export type { Tool, ToolExecutionContext, ToolExecutionResult, ToolCallHandler, } from './core/providers/tool-call.types';
14
16
  export type { AgentAction, AgentConfig, AgentsConfig, AgentInfo, AgentQueryOptions, AgentResponse, RemoteAgentConfigInput, RemoteAgentInfo, } from './types/agent.types';
15
17
  export { ExecutionMode, SecurityLevel } from './types/agent.types';
@@ -18,9 +20,20 @@ export { MentionParser, loadAvailableAgents, type MentionTask, type ParsedMentio
18
20
  export { BaseMessageFormatter, DefaultMessageFormatter, type StructuredMessage as FormatterStructuredMessage, type FormatterOptions, } from './utils/base-message-formatter';
19
21
  export type { StructuredPayload, StructuredMessage, AgentInfo as StructuredAgentInfo, StructuredPayloadMetadata, } from './types/structured-payload.types';
20
22
  export { isStructuredPayload, parseStructuredPayload, createStructuredPayload, } from './types/structured-payload.types';
21
- export { createCrewxAgent, loadAgentConfigFromYaml, loadAgentConfigFromFile, type CrewxAgent, type CrewxAgentConfig, type CrewxAgentResult, type ProviderConfig as AgentProviderConfig, type KnowledgeBaseConfig, } from './core/agent';
22
- export { type AgentQueryRequest, type AgentExecuteRequest, type AgentResult, type CallStackFrame, type EventListener, } from './core/agent';
23
+ export { createCrewxAgent, loadAgentConfigFromYaml, loadAgentConfigFromFile, resolveProvider, type CrewxAgent, type CrewxAgentConfig, type CrewxAgentResult, type ProviderConfig as AgentProviderConfig, type KnowledgeBaseConfig, } from './core/agent';
24
+ export { type AgentQueryRequest, type AgentExecuteRequest, type AgentResult, type AgentRuntimeOptions, type CallStackFrame, type EventListener, } from './core/agent';
23
25
  export { RemoteAgentManager, FetchRemoteTransport, MockRemoteTransport, type RemoteAgentManagerOptions, } from './core/remote';
24
26
  export type { RemoteAgentConfig, RemoteTransport, RemoteTransportRequestOptions, RemoteAgentQueryRequest, RemoteAgentExecuteRequest, RemoteAgentResponse, McpJsonRpcRequest, McpJsonRpcResponse, ToolNameMapping, RemoteAgentDescriptor, } from './core/remote';
25
27
  export { ParallelRunner, ParallelRunnerTimeoutError, createDefaultParallelRunner, runQueriesParallel, runExecutesParallel, } from './core/parallel';
26
28
  export type { ParallelRunnerMetrics, ParallelRunnerOptions, Task, TaskResult, TaskCallbacks, TaskExecutionContext, ParallelConfig, HelperResult, RetryPolicy, } from './core/parallel';
29
+ export { PropsValidator, type ValidationMode, } from './services/props-validator.service';
30
+ export type { PropSchema, ValidationResult as PropsValidationResult, ValidationError as PropsValidationDetail, } from './types/layout.types';
31
+ export { LayoutLoader } from './services/layout-loader.service';
32
+ export { LayoutRenderer, PropsValidationError, type RenderOptions, } from './services/layout-renderer.service';
33
+ export type { RenderContext, LayoutDefinition, ValidationResult, ValidationError, LoaderOptions, LayoutLoadError, InlineLayoutSpec, CustomLayoutDefinition, } from './types/layout.types';
34
+ export type { BaseContext, TemplateContext, AgentMetadata, TemplateVars, } from './types/template.types';
35
+ export type { SkillMetadata, SkillContent, SkillDefinition, SkillsConfig, CrewxProjectConfig, AgentDefinition, SkillParserOptions, SkillManifest, } from './schema/skills.types';
36
+ export { SkillLoadError, SkillNotFoundError, SkillDependencyError, SkillVersionMismatchError, } from './schema/skills.types';
37
+ export { parseCrewxConfig, parseCrewxConfigFromFile, parseSkillManifest, parseSkillManifestFromFile, validateSkillMetadata, loadSkillContent, clearSkillCache, } from './schema/skills-parser';
38
+ export { ProgressiveSkillLoader, ClaudeSkillAdapter, SystemRuntimeValidator, MockRuntimeValidator, } from './skills';
39
+ export type { ISkillRuntime, IProgressiveSkillLoader, IClaudeSkillAdapter, RuntimeRequirementsValidator, SkillExecutionContext, SkillExecutionResult, SkillLoadOptions, SkillCacheStats, SkillRuntimeInfo, SkillRuntimeEvents, SkillRuntimeError, ProgressiveLoadingError, SkillExecutionError, SkillContextError, SDKExecutionContext, CLIExecutionContext, ProgressiveDisclosureConfig, RuntimeInfo, SkillBundleInfo, } from './skills';
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runExecutesParallel = exports.runQueriesParallel = exports.createDefaultParallelRunner = exports.ParallelRunnerTimeoutError = exports.ParallelRunner = exports.MockRemoteTransport = exports.FetchRemoteTransport = exports.RemoteAgentManager = exports.loadAgentConfigFromFile = exports.loadAgentConfigFromYaml = exports.createCrewxAgent = exports.createStructuredPayload = exports.parseStructuredPayload = exports.isStructuredPayload = exports.DefaultMessageFormatter = exports.BaseMessageFormatter = exports.loadAvailableAgents = exports.MentionParser = exports.isError = exports.getErrorStack = exports.getErrorMessage = exports.SecurityLevel = exports.ExecutionMode = exports.CodexProvider = exports.CopilotProvider = exports.GeminiProvider = exports.ClaudeProvider = exports.BaseAIProvider = exports.ProviderNotAvailableError = exports.BuiltInProviders = exports.ProviderNamespace = exports.DocumentManager = exports.getConversationConfig = exports.DEFAULT_CONVERSATION_CONFIG = exports.getDefaultTimeoutConfig = exports.getTimeoutConfig = exports.DEFAULT_MAX_FILES = exports.DEFAULT_MAX_FILE_SIZE = exports.PREFIX_TOOL_NAME = exports.SERVER_NAME = void 0;
3
+ exports.SkillNotFoundError = exports.SkillLoadError = exports.PropsValidationError = exports.LayoutRenderer = exports.LayoutLoader = exports.PropsValidator = exports.runExecutesParallel = exports.runQueriesParallel = exports.createDefaultParallelRunner = exports.ParallelRunnerTimeoutError = exports.ParallelRunner = exports.MockRemoteTransport = exports.FetchRemoteTransport = exports.RemoteAgentManager = exports.resolveProvider = exports.loadAgentConfigFromFile = exports.loadAgentConfigFromYaml = exports.createCrewxAgent = exports.createStructuredPayload = exports.parseStructuredPayload = exports.isStructuredPayload = exports.DefaultMessageFormatter = exports.BaseMessageFormatter = exports.loadAvailableAgents = exports.MentionParser = exports.isError = exports.getErrorStack = exports.getErrorMessage = exports.SecurityLevel = exports.ExecutionMode = exports.createProviderFromConfig = exports.MockProvider = exports.BaseDynamicProviderFactory = exports.CodexProvider = exports.CopilotProvider = exports.GeminiProvider = exports.ClaudeProvider = exports.BaseAIProvider = exports.ProviderNotAvailableError = exports.BuiltInProviders = exports.ProviderNamespace = exports.DocumentManager = exports.getConversationConfig = exports.DEFAULT_CONVERSATION_CONFIG = exports.getDefaultTimeoutConfig = exports.getTimeoutConfig = exports.DEFAULT_MAX_FILES = exports.DEFAULT_MAX_FILE_SIZE = exports.PREFIX_TOOL_NAME = exports.SERVER_NAME = void 0;
4
+ exports.MockRuntimeValidator = exports.SystemRuntimeValidator = exports.ClaudeSkillAdapter = exports.ProgressiveSkillLoader = exports.clearSkillCache = exports.loadSkillContent = exports.validateSkillMetadata = exports.parseSkillManifestFromFile = exports.parseSkillManifest = exports.parseCrewxConfigFromFile = exports.parseCrewxConfig = exports.SkillVersionMismatchError = exports.SkillDependencyError = void 0;
4
5
  var constants_1 = require("./constants");
5
6
  Object.defineProperty(exports, "SERVER_NAME", { enumerable: true, get: function () { return constants_1.SERVER_NAME; } });
6
7
  Object.defineProperty(exports, "PREFIX_TOOL_NAME", { enumerable: true, get: function () { return constants_1.PREFIX_TOOL_NAME; } });
@@ -25,6 +26,9 @@ Object.defineProperty(exports, "ClaudeProvider", { enumerable: true, get: functi
25
26
  Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return providers_1.GeminiProvider; } });
26
27
  Object.defineProperty(exports, "CopilotProvider", { enumerable: true, get: function () { return providers_1.CopilotProvider; } });
27
28
  Object.defineProperty(exports, "CodexProvider", { enumerable: true, get: function () { return providers_1.CodexProvider; } });
29
+ Object.defineProperty(exports, "BaseDynamicProviderFactory", { enumerable: true, get: function () { return providers_1.BaseDynamicProviderFactory; } });
30
+ Object.defineProperty(exports, "MockProvider", { enumerable: true, get: function () { return providers_1.MockProvider; } });
31
+ Object.defineProperty(exports, "createProviderFromConfig", { enumerable: true, get: function () { return providers_1.createProviderFromConfig; } });
28
32
  var agent_types_1 = require("./types/agent.types");
29
33
  Object.defineProperty(exports, "ExecutionMode", { enumerable: true, get: function () { return agent_types_1.ExecutionMode; } });
30
34
  Object.defineProperty(exports, "SecurityLevel", { enumerable: true, get: function () { return agent_types_1.SecurityLevel; } });
@@ -46,6 +50,7 @@ var agent_1 = require("./core/agent");
46
50
  Object.defineProperty(exports, "createCrewxAgent", { enumerable: true, get: function () { return agent_1.createCrewxAgent; } });
47
51
  Object.defineProperty(exports, "loadAgentConfigFromYaml", { enumerable: true, get: function () { return agent_1.loadAgentConfigFromYaml; } });
48
52
  Object.defineProperty(exports, "loadAgentConfigFromFile", { enumerable: true, get: function () { return agent_1.loadAgentConfigFromFile; } });
53
+ Object.defineProperty(exports, "resolveProvider", { enumerable: true, get: function () { return agent_1.resolveProvider; } });
49
54
  var remote_1 = require("./core/remote");
50
55
  Object.defineProperty(exports, "RemoteAgentManager", { enumerable: true, get: function () { return remote_1.RemoteAgentManager; } });
51
56
  Object.defineProperty(exports, "FetchRemoteTransport", { enumerable: true, get: function () { return remote_1.FetchRemoteTransport; } });
@@ -56,4 +61,29 @@ Object.defineProperty(exports, "ParallelRunnerTimeoutError", { enumerable: true,
56
61
  Object.defineProperty(exports, "createDefaultParallelRunner", { enumerable: true, get: function () { return parallel_1.createDefaultParallelRunner; } });
57
62
  Object.defineProperty(exports, "runQueriesParallel", { enumerable: true, get: function () { return parallel_1.runQueriesParallel; } });
58
63
  Object.defineProperty(exports, "runExecutesParallel", { enumerable: true, get: function () { return parallel_1.runExecutesParallel; } });
64
+ var props_validator_service_1 = require("./services/props-validator.service");
65
+ Object.defineProperty(exports, "PropsValidator", { enumerable: true, get: function () { return props_validator_service_1.PropsValidator; } });
66
+ var layout_loader_service_1 = require("./services/layout-loader.service");
67
+ Object.defineProperty(exports, "LayoutLoader", { enumerable: true, get: function () { return layout_loader_service_1.LayoutLoader; } });
68
+ var layout_renderer_service_1 = require("./services/layout-renderer.service");
69
+ Object.defineProperty(exports, "LayoutRenderer", { enumerable: true, get: function () { return layout_renderer_service_1.LayoutRenderer; } });
70
+ Object.defineProperty(exports, "PropsValidationError", { enumerable: true, get: function () { return layout_renderer_service_1.PropsValidationError; } });
71
+ var skills_types_1 = require("./schema/skills.types");
72
+ Object.defineProperty(exports, "SkillLoadError", { enumerable: true, get: function () { return skills_types_1.SkillLoadError; } });
73
+ Object.defineProperty(exports, "SkillNotFoundError", { enumerable: true, get: function () { return skills_types_1.SkillNotFoundError; } });
74
+ Object.defineProperty(exports, "SkillDependencyError", { enumerable: true, get: function () { return skills_types_1.SkillDependencyError; } });
75
+ Object.defineProperty(exports, "SkillVersionMismatchError", { enumerable: true, get: function () { return skills_types_1.SkillVersionMismatchError; } });
76
+ var skills_parser_1 = require("./schema/skills-parser");
77
+ Object.defineProperty(exports, "parseCrewxConfig", { enumerable: true, get: function () { return skills_parser_1.parseCrewxConfig; } });
78
+ Object.defineProperty(exports, "parseCrewxConfigFromFile", { enumerable: true, get: function () { return skills_parser_1.parseCrewxConfigFromFile; } });
79
+ Object.defineProperty(exports, "parseSkillManifest", { enumerable: true, get: function () { return skills_parser_1.parseSkillManifest; } });
80
+ Object.defineProperty(exports, "parseSkillManifestFromFile", { enumerable: true, get: function () { return skills_parser_1.parseSkillManifestFromFile; } });
81
+ Object.defineProperty(exports, "validateSkillMetadata", { enumerable: true, get: function () { return skills_parser_1.validateSkillMetadata; } });
82
+ Object.defineProperty(exports, "loadSkillContent", { enumerable: true, get: function () { return skills_parser_1.loadSkillContent; } });
83
+ Object.defineProperty(exports, "clearSkillCache", { enumerable: true, get: function () { return skills_parser_1.clearSkillCache; } });
84
+ var skills_1 = require("./skills");
85
+ Object.defineProperty(exports, "ProgressiveSkillLoader", { enumerable: true, get: function () { return skills_1.ProgressiveSkillLoader; } });
86
+ Object.defineProperty(exports, "ClaudeSkillAdapter", { enumerable: true, get: function () { return skills_1.ClaudeSkillAdapter; } });
87
+ Object.defineProperty(exports, "SystemRuntimeValidator", { enumerable: true, get: function () { return skills_1.SystemRuntimeValidator; } });
88
+ Object.defineProperty(exports, "MockRuntimeValidator", { enumerable: true, get: function () { return skills_1.MockRuntimeValidator; } });
59
89
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAMA,yCAKqB;AAJnB,wGAAA,WAAW,OAAA;AACX,6GAAA,gBAAgB,OAAA;AAChB,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA;AAKnB,0DAAoF;AAA3E,kHAAA,gBAAgB,OAAA;AAAE,yHAAA,uBAAuB,OAAA;AAUlD,0EAG4C;AAF1C,kIAAA,2BAA2B,OAAA;AAC3B,4HAAA,qBAAqB,OAAA;AAIvB,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAGxB,gFAIgD;AAH9C,0HAAA,iBAAiB,OAAA;AACjB,yHAAA,gBAAgB,OAAA;AAChB,kIAAA,yBAAyB,OAAA;AAQ3B,sEAAmE;AAA1D,kHAAA,cAAc,OAAA;AACvB,8CAK0B;AAJxB,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AAyBf,mDAAmE;AAA1D,4GAAA,aAAa,OAAA;AAAE,4GAAA,aAAa,OAAA;AAGrC,mDAA8E;AAArE,8GAAA,eAAe,OAAA;AAAE,4GAAA,aAAa,OAAA;AAAE,sGAAA,OAAO,OAAA;AAChD,yDAKgC;AAJ9B,+GAAA,aAAa,OAAA;AACb,qHAAA,mBAAmB,OAAA;AAIrB,yEAKwC;AAJtC,8HAAA,oBAAoB,OAAA;AACpB,iIAAA,uBAAuB,OAAA;AAYzB,6EAI0C;AAHxC,+HAAA,mBAAmB,OAAA;AACnB,kIAAA,sBAAsB,OAAA;AACtB,mIAAA,uBAAuB,OAAA;AAIzB,sCASsB;AARpB,yGAAA,gBAAgB,OAAA;AAChB,gHAAA,uBAAuB,OAAA;AACvB,gHAAA,uBAAuB,OAAA;AAgBzB,wCAKuB;AAJrB,4GAAA,kBAAkB,OAAA;AAClB,8GAAA,oBAAoB,OAAA;AACpB,6GAAA,mBAAmB,OAAA;AAiBrB,4CAMyB;AALvB,0GAAA,cAAc,OAAA;AACd,sHAAA,0BAA0B,OAAA;AAC1B,uHAAA,2BAA2B,OAAA;AAC3B,8GAAA,kBAAkB,OAAA;AAClB,+GAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAMA,yCAKqB;AAJnB,wGAAA,WAAW,OAAA;AACX,6GAAA,gBAAgB,OAAA;AAChB,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA;AAKnB,0DAAoF;AAA3E,kHAAA,gBAAgB,OAAA;AAAE,yHAAA,uBAAuB,OAAA;AAWlD,0EAG4C;AAF1C,kIAAA,2BAA2B,OAAA;AAC3B,4HAAA,qBAAqB,OAAA;AAIvB,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AAGxB,gFAIgD;AAH9C,0HAAA,iBAAiB,OAAA;AACjB,yHAAA,gBAAgB,OAAA;AAChB,kIAAA,yBAAyB,OAAA;AAQ3B,sEAAmE;AAA1D,kHAAA,cAAc,OAAA;AACvB,8CAQ0B;AAPxB,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AACb,uHAAA,0BAA0B,OAAA;AAC1B,yGAAA,YAAY,OAAA;AACZ,qHAAA,wBAAwB,OAAA;AAoC1B,mDAAmE;AAA1D,4GAAA,aAAa,OAAA;AAAE,4GAAA,aAAa,OAAA;AAGrC,mDAA8E;AAArE,8GAAA,eAAe,OAAA;AAAE,4GAAA,aAAa,OAAA;AAAE,sGAAA,OAAO,OAAA;AAChD,yDAKgC;AAJ9B,+GAAA,aAAa,OAAA;AACb,qHAAA,mBAAmB,OAAA;AAIrB,yEAKwC;AAJtC,8HAAA,oBAAoB,OAAA;AACpB,iIAAA,uBAAuB,OAAA;AAYzB,6EAI0C;AAHxC,+HAAA,mBAAmB,OAAA;AACnB,kIAAA,sBAAsB,OAAA;AACtB,mIAAA,uBAAuB,OAAA;AAIzB,sCAUsB;AATpB,yGAAA,gBAAgB,OAAA;AAChB,gHAAA,uBAAuB,OAAA;AACvB,gHAAA,uBAAuB,OAAA;AACvB,wGAAA,eAAe,OAAA;AAiBjB,wCAKuB;AAJrB,4GAAA,kBAAkB,OAAA;AAClB,8GAAA,oBAAoB,OAAA;AACpB,6GAAA,mBAAmB,OAAA;AAiBrB,4CAMyB;AALvB,0GAAA,cAAc,OAAA;AACd,sHAAA,0BAA0B,OAAA;AAC1B,uHAAA,2BAA2B,OAAA;AAC3B,8GAAA,kBAAkB,OAAA;AAClB,+GAAA,mBAAmB,OAAA;AAerB,8EAG4C;AAF1C,yHAAA,cAAc,OAAA;AAUhB,0EAAgE;AAAvD,qHAAA,YAAY,OAAA;AACrB,8EAI4C;AAH1C,yHAAA,cAAc,OAAA;AACd,+HAAA,oBAAoB,OAAA;AAiCtB,sDAK+B;AAJ7B,8GAAA,cAAc,OAAA;AACd,kHAAA,kBAAkB,OAAA;AAClB,oHAAA,oBAAoB,OAAA;AACpB,yHAAA,yBAAyB,OAAA;AAI3B,wDAQgC;AAP9B,iHAAA,gBAAgB,OAAA;AAChB,yHAAA,wBAAwB,OAAA;AACxB,mHAAA,kBAAkB,OAAA;AAClB,2HAAA,0BAA0B,OAAA;AAC1B,sHAAA,qBAAqB,OAAA;AACrB,iHAAA,gBAAgB,OAAA;AAChB,gHAAA,eAAe,OAAA;AAIjB,mCAKkB;AAJhB,gHAAA,sBAAsB,OAAA;AACtB,4GAAA,kBAAkB,OAAA;AAClB,gHAAA,sBAAsB,OAAA;AACtB,8GAAA,oBAAoB,OAAA"}
@@ -0,0 +1,8 @@
1
+ import { SkillMetadata, SkillDefinition, CrewxProjectConfig, SkillValidationResult, SkillParserOptions } from './skills.types';
2
+ export declare function parseCrewxConfig(yamlString: string, options?: Partial<SkillParserOptions>): CrewxProjectConfig;
3
+ export declare function parseSkillManifest(markdownContent: string, options?: Partial<SkillParserOptions>): SkillDefinition;
4
+ export declare function validateSkillMetadata(metadata: SkillMetadata): SkillValidationResult;
5
+ export declare function loadSkillContent(definition: SkillDefinition, filePath: string): SkillDefinition;
6
+ export declare function clearSkillCache(): void;
7
+ export declare function parseSkillManifestFromFile(filePath: string, options?: Partial<SkillParserOptions>): SkillDefinition;
8
+ export declare function parseCrewxConfigFromFile(filePath: string, options?: Partial<SkillParserOptions>): CrewxProjectConfig;
@@ -0,0 +1,421 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCrewxConfig = parseCrewxConfig;
4
+ exports.parseSkillManifest = parseSkillManifest;
5
+ exports.validateSkillMetadata = validateSkillMetadata;
6
+ exports.loadSkillContent = loadSkillContent;
7
+ exports.clearSkillCache = clearSkillCache;
8
+ exports.parseSkillManifestFromFile = parseSkillManifestFromFile;
9
+ exports.parseCrewxConfigFromFile = parseCrewxConfigFromFile;
10
+ const js_yaml_1 = require("js-yaml");
11
+ const fs_1 = require("fs");
12
+ const skills_types_1 = require("./skills.types");
13
+ const DEFAULT_PARSER_OPTIONS = {
14
+ validationMode: 'strict',
15
+ loadContent: false,
16
+ resolveDependencies: false,
17
+ searchPaths: [],
18
+ cache: true,
19
+ };
20
+ const skillCache = {
21
+ metadata: new Map(),
22
+ content: new Map(),
23
+ definitions: new Map(),
24
+ };
25
+ function parseCrewxConfig(yamlString, options = {}) {
26
+ const opts = { ...DEFAULT_PARSER_OPTIONS, ...options };
27
+ if (!yamlString || typeof yamlString !== 'string') {
28
+ throw new skills_types_1.SkillLoadError('YAML string is required and must be a non-empty string');
29
+ }
30
+ let parsed;
31
+ try {
32
+ const trimmed = yamlString.trim();
33
+ parsed = (0, js_yaml_1.load)(trimmed);
34
+ }
35
+ catch (error) {
36
+ throw new skills_types_1.SkillLoadError(`Failed to parse YAML: ${error instanceof Error ? error.message : 'Unknown error'}`, undefined, error instanceof Error ? error : undefined);
37
+ }
38
+ if (parsed === null ||
39
+ parsed === undefined ||
40
+ typeof parsed !== 'object' ||
41
+ Array.isArray(parsed)) {
42
+ throw new skills_types_1.SkillLoadError('YAML must contain a valid object structure');
43
+ }
44
+ const config = {};
45
+ if (parsed.skillsPaths) {
46
+ if (Array.isArray(parsed.skillsPaths)) {
47
+ config.skillsPaths = parsed.skillsPaths.filter((p) => typeof p === 'string');
48
+ }
49
+ else if (opts.validationMode === 'strict') {
50
+ throw new skills_types_1.SkillLoadError('skillsPaths must be an array of strings');
51
+ }
52
+ }
53
+ if (parsed.skills) {
54
+ config.skills = parseSkillsConfig(parsed.skills, opts.validationMode);
55
+ }
56
+ if (parsed.layouts && typeof parsed.layouts === 'object') {
57
+ config.layouts = parsed.layouts;
58
+ }
59
+ if (parsed.documents && typeof parsed.documents === 'object') {
60
+ config.documents = parsed.documents;
61
+ }
62
+ if (parsed.settings && typeof parsed.settings === 'object') {
63
+ config.settings = parsed.settings;
64
+ }
65
+ if (parsed.agents) {
66
+ if (Array.isArray(parsed.agents)) {
67
+ config.agents = parsed.agents.map((agent) => parseAgentDefinition(agent, opts.validationMode));
68
+ }
69
+ else if (opts.validationMode === 'strict') {
70
+ throw new skills_types_1.SkillLoadError('agents must be an array');
71
+ }
72
+ }
73
+ for (const key of Object.keys(parsed)) {
74
+ if (!['skillsPaths', 'skills', 'layouts', 'documents', 'settings', 'agents'].includes(key)) {
75
+ config[key] = parsed[key];
76
+ }
77
+ }
78
+ return config;
79
+ }
80
+ function parseSkillsConfig(skillsObj, validationMode) {
81
+ const config = {};
82
+ if (typeof skillsObj !== 'object' || Array.isArray(skillsObj)) {
83
+ if (validationMode === 'strict') {
84
+ throw new skills_types_1.SkillLoadError('skills configuration must be an object');
85
+ }
86
+ return config;
87
+ }
88
+ if (skillsObj.include !== undefined) {
89
+ if (Array.isArray(skillsObj.include)) {
90
+ config.include = skillsObj.include.filter((s) => typeof s === 'string');
91
+ }
92
+ else if (validationMode === 'strict') {
93
+ throw new skills_types_1.SkillLoadError('skills.include must be an array of strings');
94
+ }
95
+ }
96
+ if (skillsObj.exclude !== undefined) {
97
+ if (Array.isArray(skillsObj.exclude)) {
98
+ config.exclude = skillsObj.exclude.filter((s) => typeof s === 'string');
99
+ }
100
+ else if (validationMode === 'strict') {
101
+ throw new skills_types_1.SkillLoadError('skills.exclude must be an array of strings');
102
+ }
103
+ }
104
+ if (skillsObj.autoload !== undefined) {
105
+ if (typeof skillsObj.autoload === 'boolean') {
106
+ config.autoload = skillsObj.autoload;
107
+ }
108
+ else if (validationMode === 'strict') {
109
+ throw new skills_types_1.SkillLoadError('skills.autoload must be a boolean');
110
+ }
111
+ }
112
+ return config;
113
+ }
114
+ function parseAgentDefinition(agentObj, validationMode) {
115
+ if (typeof agentObj !== 'object' || Array.isArray(agentObj)) {
116
+ if (validationMode === 'strict') {
117
+ throw new skills_types_1.SkillLoadError('Agent definition must be an object');
118
+ }
119
+ return agentObj;
120
+ }
121
+ if (agentObj.skills) {
122
+ agentObj.skills = parseSkillsConfig(agentObj.skills, validationMode);
123
+ }
124
+ return agentObj;
125
+ }
126
+ function parseSkillManifest(markdownContent, options = {}) {
127
+ const opts = { ...DEFAULT_PARSER_OPTIONS, ...options };
128
+ if (!markdownContent || typeof markdownContent !== 'string') {
129
+ throw new skills_types_1.SkillLoadError('Markdown content is required and must be a non-empty string');
130
+ }
131
+ const frontmatterMatch = markdownContent.match(/^---\s*\n([\s\S]*?)\n---\s*\n/);
132
+ if (!frontmatterMatch || !frontmatterMatch[1]) {
133
+ throw new skills_types_1.SkillLoadError('Skill manifest must contain YAML frontmatter (---...---)');
134
+ }
135
+ const frontmatterYaml = frontmatterMatch[1];
136
+ const contentAfterFrontmatter = markdownContent.slice(frontmatterMatch[0].length);
137
+ let metadata;
138
+ try {
139
+ const parsed = (0, js_yaml_1.load)(frontmatterYaml);
140
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
141
+ throw new Error('Frontmatter must be a YAML object');
142
+ }
143
+ metadata = parseSkillMetadata(parsed, opts.validationMode);
144
+ }
145
+ catch (error) {
146
+ const skillName = error?.skillName || 'unknown';
147
+ throw new skills_types_1.SkillLoadError(`Failed to parse skill frontmatter: ${error instanceof Error ? error.message : 'Unknown error'}`, skillName, error instanceof Error ? error : undefined);
148
+ }
149
+ const validationResult = validateSkillMetadata(metadata);
150
+ if (!validationResult.valid && opts.validationMode === 'strict') {
151
+ const errorMessages = validationResult.errors.map((e) => `${e.field}: ${e.message}`).join('; ');
152
+ throw new skills_types_1.SkillLoadError(`Skill metadata validation failed: ${errorMessages}`, metadata.name);
153
+ }
154
+ const definition = {
155
+ metadata,
156
+ fullyLoaded: opts.loadContent,
157
+ };
158
+ if (opts.loadContent) {
159
+ definition.content = parseSkillContent(contentAfterFrontmatter);
160
+ }
161
+ return definition;
162
+ }
163
+ function parseSkillMetadata(frontmatter, validationMode) {
164
+ const metadata = {
165
+ name: '',
166
+ description: '',
167
+ version: '',
168
+ };
169
+ if (typeof frontmatter.name === 'string') {
170
+ metadata.name = frontmatter.name;
171
+ }
172
+ else if (validationMode === 'strict') {
173
+ throw new skills_types_1.SkillLoadError('Skill name is required and must be a string');
174
+ }
175
+ else {
176
+ metadata.name = '';
177
+ }
178
+ if (typeof frontmatter.description === 'string') {
179
+ metadata.description = frontmatter.description;
180
+ }
181
+ else if (validationMode === 'strict') {
182
+ throw new skills_types_1.SkillLoadError('Skill description is required and must be a string');
183
+ }
184
+ else {
185
+ metadata.description = '';
186
+ }
187
+ if (typeof frontmatter.version === 'string') {
188
+ metadata.version = frontmatter.version;
189
+ }
190
+ else if (validationMode === 'strict') {
191
+ throw new skills_types_1.SkillLoadError('Skill version is required and must be a string');
192
+ }
193
+ else {
194
+ metadata.version = '';
195
+ }
196
+ if (frontmatter.dependencies !== undefined) {
197
+ if (Array.isArray(frontmatter.dependencies)) {
198
+ metadata.dependencies = frontmatter.dependencies.filter((d) => typeof d === 'string');
199
+ }
200
+ else if (validationMode === 'strict') {
201
+ throw new skills_types_1.SkillLoadError('Skill dependencies must be an array');
202
+ }
203
+ }
204
+ if (frontmatter.runtime !== undefined) {
205
+ if (typeof frontmatter.runtime === 'object' && frontmatter.runtime !== null) {
206
+ metadata.runtime = frontmatter.runtime;
207
+ }
208
+ else if (validationMode === 'strict') {
209
+ throw new skills_types_1.SkillLoadError('Skill runtime must be an object');
210
+ }
211
+ }
212
+ if (frontmatter.visibility !== undefined) {
213
+ if (typeof frontmatter.visibility === 'string' &&
214
+ ['public', 'private', 'internal'].includes(frontmatter.visibility)) {
215
+ metadata.visibility = frontmatter.visibility;
216
+ }
217
+ else if (validationMode === 'strict') {
218
+ throw new skills_types_1.SkillLoadError('Skill visibility must be "public", "private", or "internal"');
219
+ }
220
+ }
221
+ for (const key of Object.keys(frontmatter)) {
222
+ if (!['name', 'description', 'version', 'dependencies', 'runtime', 'visibility'].includes(key)) {
223
+ metadata[key] = frontmatter[key];
224
+ }
225
+ }
226
+ return metadata;
227
+ }
228
+ function parseSkillContent(markdown) {
229
+ const content = {
230
+ raw: markdown,
231
+ };
232
+ const roleMatch = markdown.match(/##\s+Role\s*\n([\s\S]*?)(?=\n##\s+|\n---\s*\n|$)/i);
233
+ if (roleMatch && roleMatch[1]) {
234
+ content.role = roleMatch[1].trim();
235
+ }
236
+ const taskMatch = markdown.match(/##\s+Task\s*\n([\s\S]*?)(?=\n##\s+|\n---\s*\n|$)/i);
237
+ if (taskMatch && taskMatch[1]) {
238
+ content.task = taskMatch[1].trim();
239
+ }
240
+ const instructionsMatch = markdown.match(/##\s+Instructions\s*\n([\s\S]*?)(?=\n##\s+|\n---\s*\n|$)/i);
241
+ if (instructionsMatch && instructionsMatch[1]) {
242
+ content.instructions = instructionsMatch[1].trim();
243
+ }
244
+ return content;
245
+ }
246
+ function validateSkillMetadata(metadata) {
247
+ const errors = [];
248
+ const warnings = [];
249
+ const skillName = metadata.name || 'unknown';
250
+ if (!metadata.name) {
251
+ errors.push({
252
+ skillName,
253
+ field: 'name',
254
+ message: 'Skill name is required',
255
+ expected: 'non-empty string',
256
+ actual: metadata.name,
257
+ });
258
+ }
259
+ else {
260
+ const namePattern = /^[a-z0-9-]+$/;
261
+ if (!namePattern.test(metadata.name)) {
262
+ errors.push({
263
+ skillName: metadata.name,
264
+ field: 'name',
265
+ message: 'Skill name must be kebab-case (lowercase letters, numbers, and hyphens only)',
266
+ expected: 'kebab-case format',
267
+ actual: metadata.name,
268
+ });
269
+ }
270
+ if (metadata.name.length > 50) {
271
+ warnings?.push({
272
+ skillName: metadata.name,
273
+ field: 'name',
274
+ message: 'Skill name should be 50 characters or less',
275
+ expected: '≤50 characters',
276
+ actual: metadata.name.length,
277
+ });
278
+ }
279
+ }
280
+ if (!metadata.description) {
281
+ errors.push({
282
+ skillName,
283
+ field: 'description',
284
+ message: 'Skill description is required',
285
+ expected: 'non-empty string',
286
+ actual: metadata.description,
287
+ });
288
+ }
289
+ else {
290
+ if (metadata.description.length < 10) {
291
+ warnings?.push({
292
+ skillName,
293
+ field: 'description',
294
+ message: 'Skill description should be at least 10 characters',
295
+ expected: '≥10 characters',
296
+ actual: metadata.description.length,
297
+ });
298
+ }
299
+ if (metadata.description.length > 200) {
300
+ warnings?.push({
301
+ skillName,
302
+ field: 'description',
303
+ message: 'Skill description should be 200 characters or less',
304
+ expected: '≤200 characters',
305
+ actual: metadata.description.length,
306
+ });
307
+ }
308
+ }
309
+ if (!metadata.version) {
310
+ errors.push({
311
+ skillName,
312
+ field: 'version',
313
+ message: 'Skill version is required',
314
+ expected: 'semantic version (e.g., "1.0.0")',
315
+ actual: metadata.version,
316
+ });
317
+ }
318
+ else {
319
+ const versionPattern = /^\d+\.\d+\.\d+$/;
320
+ if (!versionPattern.test(metadata.version)) {
321
+ errors.push({
322
+ skillName,
323
+ field: 'version',
324
+ message: 'Skill version must follow semantic versioning (major.minor.patch)',
325
+ expected: 'X.Y.Z format',
326
+ actual: metadata.version,
327
+ });
328
+ }
329
+ }
330
+ if (metadata.dependencies) {
331
+ if (!Array.isArray(metadata.dependencies)) {
332
+ errors.push({
333
+ skillName,
334
+ field: 'dependencies',
335
+ message: 'Dependencies must be an array',
336
+ expected: 'array of strings',
337
+ actual: typeof metadata.dependencies,
338
+ });
339
+ }
340
+ else {
341
+ const depPattern = /^[a-z0-9-]+(@\d+\.\d+\.\d+)?$/;
342
+ metadata.dependencies.forEach((dep, index) => {
343
+ if (typeof dep !== 'string' || !depPattern.test(dep)) {
344
+ errors.push({
345
+ skillName,
346
+ field: `dependencies[${index}]`,
347
+ message: 'Dependency must be in format "skill-name" or "skill-name@version"',
348
+ expected: 'kebab-case name with optional @version',
349
+ actual: dep,
350
+ });
351
+ }
352
+ });
353
+ }
354
+ }
355
+ return {
356
+ valid: errors.length === 0,
357
+ errors,
358
+ warnings: warnings || [],
359
+ };
360
+ }
361
+ function loadSkillContent(definition, filePath) {
362
+ if (definition.fullyLoaded) {
363
+ return definition;
364
+ }
365
+ const cacheKey = filePath || definition.metadata.name;
366
+ if (skillCache.content.has(cacheKey)) {
367
+ definition.content = skillCache.content.get(cacheKey);
368
+ definition.fullyLoaded = true;
369
+ return definition;
370
+ }
371
+ let fileContent;
372
+ try {
373
+ fileContent = (0, fs_1.readFileSync)(filePath, 'utf-8');
374
+ }
375
+ catch (error) {
376
+ throw new skills_types_1.SkillLoadError(`Failed to read skill file '${filePath}': ${error instanceof Error ? error.message : 'Unknown error'}`, definition.metadata.name, error instanceof Error ? error : undefined);
377
+ }
378
+ const frontmatterMatch = fileContent.match(/^---\s*\n[\s\S]*?\n---\s*\n/);
379
+ const contentAfterFrontmatter = frontmatterMatch
380
+ ? fileContent.slice(frontmatterMatch[0].length)
381
+ : fileContent;
382
+ const content = parseSkillContent(contentAfterFrontmatter);
383
+ skillCache.content.set(cacheKey, content);
384
+ definition.content = content;
385
+ definition.fullyLoaded = true;
386
+ return definition;
387
+ }
388
+ function clearSkillCache() {
389
+ skillCache.metadata.clear();
390
+ skillCache.content.clear();
391
+ skillCache.definitions.clear();
392
+ }
393
+ function parseSkillManifestFromFile(filePath, options = {}) {
394
+ if (!filePath || typeof filePath !== 'string') {
395
+ throw new skills_types_1.SkillLoadError('File path is required and must be a non-empty string');
396
+ }
397
+ let fileContent;
398
+ try {
399
+ fileContent = (0, fs_1.readFileSync)(filePath, 'utf-8');
400
+ }
401
+ catch (error) {
402
+ throw new skills_types_1.SkillLoadError(`Failed to read skill file '${filePath}': ${error instanceof Error ? error.message : 'Unknown error'}`, undefined, error instanceof Error ? error : undefined);
403
+ }
404
+ const definition = parseSkillManifest(fileContent, options);
405
+ definition.filePath = filePath;
406
+ return definition;
407
+ }
408
+ function parseCrewxConfigFromFile(filePath, options = {}) {
409
+ if (!filePath || typeof filePath !== 'string') {
410
+ throw new skills_types_1.SkillLoadError('File path is required and must be a non-empty string');
411
+ }
412
+ let fileContent;
413
+ try {
414
+ fileContent = (0, fs_1.readFileSync)(filePath, 'utf-8');
415
+ }
416
+ catch (error) {
417
+ throw new skills_types_1.SkillLoadError(`Failed to read config file '${filePath}': ${error instanceof Error ? error.message : 'Unknown error'}`, undefined, error instanceof Error ? error : undefined);
418
+ }
419
+ return parseCrewxConfig(fileContent, options);
420
+ }
421
+ //# sourceMappingURL=skills-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-parser.js","sourceRoot":"","sources":["../../src/schema/skills-parser.ts"],"names":[],"mappings":"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"}