@enactprotocol/shared 2.2.4 → 2.3.4

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 (111) hide show
  1. package/README.md +1 -18
  2. package/dist/config.d.ts +12 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +32 -6
  5. package/dist/config.js.map +1 -1
  6. package/dist/execution/action-command.d.ts +131 -0
  7. package/dist/execution/action-command.d.ts.map +1 -0
  8. package/dist/execution/action-command.js +300 -0
  9. package/dist/execution/action-command.js.map +1 -0
  10. package/dist/execution/command.d.ts +8 -8
  11. package/dist/execution/command.js +6 -6
  12. package/dist/execution/index.d.ts +1 -0
  13. package/dist/execution/index.d.ts.map +1 -1
  14. package/dist/execution/index.js +2 -0
  15. package/dist/execution/index.js.map +1 -1
  16. package/dist/execution/types.d.ts +5 -2
  17. package/dist/execution/types.d.ts.map +1 -1
  18. package/dist/execution/types.js.map +1 -1
  19. package/dist/index.d.ts +8 -6
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +11 -4
  22. package/dist/index.js.map +1 -1
  23. package/dist/manifest/actions-loader.d.ts +29 -0
  24. package/dist/manifest/actions-loader.d.ts.map +1 -0
  25. package/dist/manifest/actions-loader.js +34 -0
  26. package/dist/manifest/actions-loader.js.map +1 -0
  27. package/dist/manifest/actions-parser.d.ts +69 -0
  28. package/dist/manifest/actions-parser.d.ts.map +1 -0
  29. package/dist/manifest/actions-parser.js +265 -0
  30. package/dist/manifest/actions-parser.js.map +1 -0
  31. package/dist/manifest/index.d.ts +2 -0
  32. package/dist/manifest/index.d.ts.map +1 -1
  33. package/dist/manifest/index.js +4 -0
  34. package/dist/manifest/index.js.map +1 -1
  35. package/dist/manifest/loader.d.ts +7 -2
  36. package/dist/manifest/loader.d.ts.map +1 -1
  37. package/dist/manifest/loader.js +71 -4
  38. package/dist/manifest/loader.js.map +1 -1
  39. package/dist/manifest/parser.d.ts +1 -0
  40. package/dist/manifest/parser.d.ts.map +1 -1
  41. package/dist/manifest/parser.js +1 -0
  42. package/dist/manifest/parser.js.map +1 -1
  43. package/dist/manifest/scripts.d.ts +19 -0
  44. package/dist/manifest/scripts.d.ts.map +1 -0
  45. package/dist/manifest/scripts.js +102 -0
  46. package/dist/manifest/scripts.js.map +1 -0
  47. package/dist/manifest/validator.d.ts +1 -8
  48. package/dist/manifest/validator.d.ts.map +1 -1
  49. package/dist/manifest/validator.js +14 -13
  50. package/dist/manifest/validator.js.map +1 -1
  51. package/dist/mcp-registry.js +5 -5
  52. package/dist/mcp-registry.js.map +1 -1
  53. package/dist/paths.d.ts +9 -2
  54. package/dist/paths.d.ts.map +1 -1
  55. package/dist/paths.js +12 -3
  56. package/dist/paths.js.map +1 -1
  57. package/dist/registry.d.ts +3 -2
  58. package/dist/registry.d.ts.map +1 -1
  59. package/dist/registry.js +5 -5
  60. package/dist/registry.js.map +1 -1
  61. package/dist/resolver.d.ts +55 -4
  62. package/dist/resolver.d.ts.map +1 -1
  63. package/dist/resolver.js +133 -75
  64. package/dist/resolver.js.map +1 -1
  65. package/dist/types/actions.d.ts +194 -0
  66. package/dist/types/actions.d.ts.map +1 -0
  67. package/dist/types/actions.js +32 -0
  68. package/dist/types/actions.js.map +1 -0
  69. package/dist/types/index.d.ts +3 -1
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/types/index.js +1 -0
  72. package/dist/types/index.js.map +1 -1
  73. package/dist/types/manifest.d.ts +50 -5
  74. package/dist/types/manifest.d.ts.map +1 -1
  75. package/dist/types/manifest.js +10 -2
  76. package/dist/types/manifest.js.map +1 -1
  77. package/package.json +2 -2
  78. package/src/config.ts +48 -6
  79. package/src/execution/action-command.ts +417 -0
  80. package/src/execution/command.ts +8 -8
  81. package/src/execution/index.ts +17 -0
  82. package/src/execution/types.ts +13 -2
  83. package/src/index.ts +37 -0
  84. package/src/manifest/actions-loader.ts +49 -0
  85. package/src/manifest/index.ts +12 -0
  86. package/src/manifest/loader.ts +77 -4
  87. package/src/manifest/parser.ts +1 -0
  88. package/src/manifest/scripts.ts +116 -0
  89. package/src/manifest/validator.ts +15 -14
  90. package/src/mcp-registry.ts +5 -5
  91. package/src/paths.ts +13 -3
  92. package/src/registry.ts +5 -5
  93. package/src/resolver.ts +172 -77
  94. package/src/types/actions.ts +223 -0
  95. package/src/types/index.ts +11 -0
  96. package/src/types/manifest.ts +67 -6
  97. package/tests/action-command.test.ts +249 -0
  98. package/tests/config-normalization.test.ts +279 -0
  99. package/tests/config.test.ts +4 -1
  100. package/tests/effective-input-schema.test.ts +86 -0
  101. package/tests/fixtures/valid-tool.md +5 -12
  102. package/tests/fixtures/valid-tool.yaml +3 -10
  103. package/tests/hooks.test.ts +177 -0
  104. package/tests/manifest/loader.test.ts +34 -20
  105. package/tests/manifest/parser.test.ts +11 -15
  106. package/tests/manifest/validator.test.ts +7 -17
  107. package/tests/manifest-types.test.ts +9 -11
  108. package/tests/paths.test.ts +11 -4
  109. package/tests/registry.test.ts +12 -11
  110. package/tests/resolver.test.ts +11 -7
  111. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Parser and validator for ACTIONS.yaml files
3
+ *
4
+ * ACTIONS.yaml defines executable actions for Agent Skills with typed inputs,
5
+ * validated outputs, and secure credential handling.
6
+ *
7
+ * @see RFC-001-AGENT-ACTIONS.md
8
+ */
9
+ import yaml from "js-yaml";
10
+ /**
11
+ * Error thrown when parsing ACTIONS.yaml fails
12
+ */
13
+ export class ActionsParseError extends Error {
14
+ originalError;
15
+ constructor(message, originalError) {
16
+ super(message);
17
+ this.name = "ActionsParseError";
18
+ this.originalError = originalError;
19
+ }
20
+ }
21
+ /**
22
+ * Regex to detect {{param}} template syntax in a string
23
+ */
24
+ const TEMPLATE_REGEX = /\{\{([^}]+)\}\}/g;
25
+ /**
26
+ * Check if a string contains {{param}} templates
27
+ */
28
+ export function containsTemplates(str) {
29
+ return TEMPLATE_REGEX.test(str);
30
+ }
31
+ /**
32
+ * Extract template variable names from a command
33
+ */
34
+ export function extractTemplateVars(command) {
35
+ const vars = new Set();
36
+ const strings = Array.isArray(command) ? command : [command];
37
+ for (const str of strings) {
38
+ // Reset regex lastIndex for each string
39
+ const regex = /\{\{([^}]+)\}\}/g;
40
+ let match;
41
+ while ((match = regex.exec(str)) !== null) {
42
+ const captured = match[1];
43
+ if (captured) {
44
+ vars.add(captured.trim());
45
+ }
46
+ }
47
+ }
48
+ return Array.from(vars);
49
+ }
50
+ /**
51
+ * Parse YAML content into an ActionsManifest object
52
+ *
53
+ * @param content - Raw YAML string from ACTIONS.yaml
54
+ * @returns Parsed ActionsManifest (not yet validated)
55
+ * @throws ActionsParseError if YAML parsing fails
56
+ */
57
+ export function parseActionsYaml(content) {
58
+ if (!content || content.trim() === "") {
59
+ throw new ActionsParseError("ACTIONS.yaml content is empty");
60
+ }
61
+ try {
62
+ const parsed = yaml.load(content);
63
+ if (parsed === null || parsed === undefined) {
64
+ throw new ActionsParseError("ACTIONS.yaml content is empty or null");
65
+ }
66
+ if (typeof parsed !== "object" || Array.isArray(parsed)) {
67
+ throw new ActionsParseError("ACTIONS.yaml content must be an object, not an array or primitive");
68
+ }
69
+ return parsed;
70
+ }
71
+ catch (error) {
72
+ if (error instanceof ActionsParseError) {
73
+ throw error;
74
+ }
75
+ const yamlError = error;
76
+ throw new ActionsParseError(`Failed to parse ACTIONS.yaml: ${yamlError.message}`, yamlError);
77
+ }
78
+ }
79
+ /**
80
+ * Validate an ActionsManifest
81
+ *
82
+ * Checks:
83
+ * - Required fields present (actions map with at least one action)
84
+ * - Each action has description, command (inputSchema is optional)
85
+ * - String-form commands do not contain {{}} templates
86
+ * - inputSchema and outputSchema are valid objects (if present)
87
+ *
88
+ * @param manifest - The parsed manifest to validate
89
+ * @returns Validation result with any errors
90
+ */
91
+ export function validateActionsManifest(manifest) {
92
+ const errors = [];
93
+ // Check actions map exists
94
+ if (!manifest.actions) {
95
+ errors.push({
96
+ path: "actions",
97
+ message: "actions field is required",
98
+ code: "MISSING_REQUIRED_FIELD",
99
+ });
100
+ return { valid: false, errors };
101
+ }
102
+ // Must be an object (map), not an array
103
+ if (typeof manifest.actions !== "object" || Array.isArray(manifest.actions)) {
104
+ errors.push({
105
+ path: "actions",
106
+ message: "actions must be an object (map of action names to definitions)",
107
+ code: "MISSING_REQUIRED_FIELD",
108
+ });
109
+ return { valid: false, errors };
110
+ }
111
+ const actionNames = Object.keys(manifest.actions);
112
+ if (actionNames.length === 0) {
113
+ errors.push({
114
+ path: "actions",
115
+ message: "actions must contain at least one action",
116
+ code: "EMPTY_ACTIONS_ARRAY",
117
+ });
118
+ return { valid: false, errors };
119
+ }
120
+ // Validate each action
121
+ for (const actionName of actionNames) {
122
+ const action = manifest.actions[actionName];
123
+ const prefix = `actions.${actionName}`;
124
+ if (!action || typeof action !== "object") {
125
+ errors.push({
126
+ path: prefix,
127
+ message: "action must be an object",
128
+ code: "MISSING_REQUIRED_FIELD",
129
+ });
130
+ continue;
131
+ }
132
+ // Validate action name format (the key)
133
+ if (!actionName || typeof actionName !== "string") {
134
+ errors.push({
135
+ path: prefix,
136
+ message: "action name (key) must be a non-empty string",
137
+ code: "MISSING_REQUIRED_FIELD",
138
+ });
139
+ }
140
+ // Validate required fields
141
+ if (!action.description || typeof action.description !== "string") {
142
+ errors.push({
143
+ path: `${prefix}.description`,
144
+ message: "action description is required and must be a string",
145
+ code: "MISSING_REQUIRED_FIELD",
146
+ });
147
+ }
148
+ if (!action.command) {
149
+ errors.push({
150
+ path: `${prefix}.command`,
151
+ message: "action command is required",
152
+ code: "MISSING_REQUIRED_FIELD",
153
+ });
154
+ }
155
+ else {
156
+ // Validate command format
157
+ const commandError = validateCommand(action.command, prefix);
158
+ if (commandError) {
159
+ errors.push(commandError);
160
+ }
161
+ }
162
+ // inputSchema is optional - but if present, validate it
163
+ if (action.inputSchema !== undefined &&
164
+ (typeof action.inputSchema !== "object" || Array.isArray(action.inputSchema))) {
165
+ errors.push({
166
+ path: `${prefix}.inputSchema`,
167
+ message: "inputSchema must be a JSON Schema object",
168
+ code: "INVALID_INPUT_SCHEMA",
169
+ });
170
+ }
171
+ // Validate optional outputSchema if present
172
+ if (action.outputSchema !== undefined &&
173
+ (typeof action.outputSchema !== "object" || Array.isArray(action.outputSchema))) {
174
+ errors.push({
175
+ path: `${prefix}.outputSchema`,
176
+ message: "outputSchema must be a JSON Schema object",
177
+ code: "INVALID_OUTPUT_SCHEMA",
178
+ });
179
+ }
180
+ }
181
+ if (errors.length > 0) {
182
+ return { valid: false, errors };
183
+ }
184
+ return { valid: true };
185
+ }
186
+ /**
187
+ * Validate a command field
188
+ *
189
+ * - String form is allowed only without {{}} templates
190
+ * - Array form is required when using {{}} templates
191
+ *
192
+ * @param command - The command to validate
193
+ * @param prefix - Path prefix for error messages
194
+ * @returns Validation error if invalid, undefined if valid
195
+ */
196
+ function validateCommand(command, prefix) {
197
+ if (typeof command === "string") {
198
+ // String form: check for templates (not allowed)
199
+ if (containsTemplates(command)) {
200
+ return {
201
+ path: `${prefix}.command`,
202
+ message: "string-form commands cannot contain {{}} templates. Use array form instead: " +
203
+ '["cmd", "arg", "{{param}}"]',
204
+ code: "STRING_COMMAND_WITH_TEMPLATE",
205
+ };
206
+ }
207
+ return undefined;
208
+ }
209
+ if (Array.isArray(command)) {
210
+ // Array form: validate each element is a string
211
+ for (let i = 0; i < command.length; i++) {
212
+ if (typeof command[i] !== "string") {
213
+ return {
214
+ path: `${prefix}.command[${i}]`,
215
+ message: "command array elements must be strings",
216
+ code: "INVALID_COMMAND_FORMAT",
217
+ };
218
+ }
219
+ }
220
+ return undefined;
221
+ }
222
+ return {
223
+ path: `${prefix}.command`,
224
+ message: "command must be a string or array of strings",
225
+ code: "INVALID_COMMAND_FORMAT",
226
+ };
227
+ }
228
+ /**
229
+ * Parse and validate ACTIONS.yaml content in one step
230
+ *
231
+ * @param content - Raw YAML string from ACTIONS.yaml
232
+ * @returns Parsed and validated ActionsManifest
233
+ * @throws ActionsParseError if parsing or validation fails
234
+ */
235
+ export function parseAndValidateActions(content) {
236
+ const manifest = parseActionsYaml(content);
237
+ const validation = validateActionsManifest(manifest);
238
+ if (!validation.valid && validation.errors) {
239
+ const errorMessages = validation.errors
240
+ .map((e) => ` - ${e.path}: ${e.message}`)
241
+ .join("\n");
242
+ throw new ActionsParseError(`ACTIONS.yaml validation failed:\n${errorMessages}`);
243
+ }
244
+ return manifest;
245
+ }
246
+ /**
247
+ * Get action by name from a manifest
248
+ *
249
+ * @param manifest - The actions manifest
250
+ * @param name - The action name to find
251
+ * @returns The action or undefined if not found
252
+ */
253
+ export function getAction(manifest, name) {
254
+ return manifest.actions[name];
255
+ }
256
+ /**
257
+ * Get all action names from a manifest
258
+ *
259
+ * @param manifest - The actions manifest
260
+ * @returns Array of action names
261
+ */
262
+ export function getActionNames(manifest) {
263
+ return Object.keys(manifest.actions);
264
+ }
265
+ //# sourceMappingURL=actions-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions-parser.js","sourceRoot":"","sources":["../../src/manifest/actions-parser.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,6 @@
4
4
  export { ManifestParseError, parseManifest, parseManifestAuto, parseYaml, extractFrontmatter, detectFormat, type ManifestFormat, } from "./parser";
5
5
  export { validateManifest, validateManifestStrict, isValidToolName, isValidLocalToolName, isValidVersion, isValidTimeout, ToolManifestSchema, type ValidateManifestOptions, } from "./validator";
6
6
  export { ManifestLoadError, loadManifest, loadManifestFromDir, findManifestFile, hasManifest, tryLoadManifest, tryLoadManifestFromDir, type LoadedManifest, type LoadManifestOptions, } from "./loader";
7
+ export { loadManifestWithActions, type LoadedManifestWithActions, } from "./actions-loader";
8
+ export { scriptToAction, manifestScriptsToActionsManifest, } from "./scripts";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,uBAAuB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,cAAc,EACd,gCAAgC,GACjC,MAAM,WAAW,CAAC"}
@@ -7,4 +7,8 @@ export { ManifestParseError, parseManifest, parseManifestAuto, parseYaml, extrac
7
7
  export { validateManifest, validateManifestStrict, isValidToolName, isValidLocalToolName, isValidVersion, isValidTimeout, ToolManifestSchema, } from "./validator";
8
8
  // Loader
9
9
  export { ManifestLoadError, loadManifest, loadManifestFromDir, findManifestFile, hasManifest, tryLoadManifest, tryLoadManifestFromDir, } from "./loader";
10
+ // Manifest with scripts
11
+ export { loadManifestWithActions, } from "./actions-loader";
12
+ // Scripts (inline scripts → Action bridge)
13
+ export { scriptToAction, manifestScriptsToActionsManifest, } from "./scripts";
10
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS;AACT,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,YAAY,GAEb,MAAM,UAAU,CAAC;AAElB,YAAY;AACZ,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,kBAAkB,GAEnB,MAAM,aAAa,CAAC;AAErB,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,sBAAsB,GAGvB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS;AACT,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,YAAY,GAEb,MAAM,UAAU,CAAC;AAElB,YAAY;AACZ,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,kBAAkB,GAEnB,MAAM,aAAa,CAAC;AAErB,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,sBAAsB,GAGvB,MAAM,UAAU,CAAC;AAElB,wBAAwB;AACxB,OAAO,EACL,uBAAuB,GAExB,MAAM,kBAAkB,CAAC;AAE1B,2CAA2C;AAC3C,OAAO,EACL,cAAc,EACd,gCAAgC,GACjC,MAAM,WAAW,CAAC"}
@@ -36,7 +36,7 @@ export interface LoadManifestOptions extends ValidateManifestOptions {
36
36
  /**
37
37
  * Load a manifest from a file path
38
38
  *
39
- * @param filePath - Path to the manifest file (SKILL.md, enact.md, enact.yaml, or enact.yml)
39
+ * @param filePath - Path to the manifest file (SKILL.md, skill.yaml, skill.yml, enact.md, enact.yaml, or enact.yml)
40
40
  * @param options - Options for loading and validation
41
41
  * @returns LoadedManifest with validated manifest and metadata
42
42
  * @throws ManifestLoadError if file doesn't exist, parse fails, or validation fails
@@ -45,7 +45,12 @@ export declare function loadManifest(filePath: string, options?: LoadManifestOpt
45
45
  /**
46
46
  * Find and load a manifest from a directory
47
47
  *
48
- * Searches for SKILL.md, enact.md, enact.yaml, or enact.yml in the given directory
48
+ * Supports two modes:
49
+ * 1. **Two-file model**: If both `skill.yaml` and `SKILL.md` exist, `skill.yaml` is
50
+ * the package manifest and `SKILL.md` provides agent-facing documentation (body → `doc`).
51
+ * Also supports legacy `enact.yaml` in place of `skill.yaml`.
52
+ * 2. **Single-file fallback**: Searches for SKILL.md, skill.yaml, skill.yml, enact.md, enact.yaml, or enact.yml
53
+ * and uses the first match as the complete manifest.
49
54
  *
50
55
  * @param dir - Directory to search for manifest
51
56
  * @param options - Options for loading and validation
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/manifest/loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAkB,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,OAAO,EAAE,KAAK,uBAAuB,EAAoB,MAAM,aAAa,CAAC;AAE7E;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,QAAQ,EAAE,MAAM;aAChB,aAAa,CAAC,EAAE,KAAK;gBAFrC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,KAAK,YAAA;CAKxC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,QAAQ,EAAE,YAAY,CAAC;IACvB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;CAEnE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,cAAc,CA0DhG;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,cAAc,CAahB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,mBAAwB,GAChC,cAAc,GAAG,IAAI,CAMvB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,cAAc,GAAG,IAAI,CAMvB"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/manifest/loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAkB,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,OAAO,EAAE,KAAK,uBAAuB,EAAoB,MAAM,aAAa,CAAC;AAE7E;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,QAAQ,EAAE,MAAM;aAChB,aAAa,CAAC,EAAE,KAAK;gBAFrC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,KAAK,YAAA;CAKxC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,QAAQ,EAAE,YAAY,CAAC;IACvB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;CAEnE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,cAAc,CA0DhG;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,cAAc,CA2DhB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,mBAAwB,GAChC,cAAc,GAAG,IAAI,CAMvB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,cAAc,GAAG,IAAI,CAMvB"}
@@ -5,8 +5,9 @@
5
5
  */
6
6
  import { existsSync, readFileSync } from "node:fs";
7
7
  import { basename, join } from "node:path";
8
+ import yaml from "js-yaml";
8
9
  import { MANIFEST_FILES } from "../types/manifest";
9
- import { ManifestParseError, parseManifestAuto } from "./parser";
10
+ import { ManifestParseError, extractFrontmatter, parseManifestAuto } from "./parser";
10
11
  import { validateManifest } from "./validator";
11
12
  /**
12
13
  * Error thrown when loading a manifest fails
@@ -24,7 +25,7 @@ export class ManifestLoadError extends Error {
24
25
  /**
25
26
  * Load a manifest from a file path
26
27
  *
27
- * @param filePath - Path to the manifest file (SKILL.md, enact.md, enact.yaml, or enact.yml)
28
+ * @param filePath - Path to the manifest file (SKILL.md, skill.yaml, skill.yml, enact.md, enact.yaml, or enact.yml)
28
29
  * @param options - Options for loading and validation
29
30
  * @returns LoadedManifest with validated manifest and metadata
30
31
  * @throws ManifestLoadError if file doesn't exist, parse fails, or validation fails
@@ -73,10 +74,35 @@ export function loadManifest(filePath, options = {}) {
73
74
  }
74
75
  return result;
75
76
  }
77
+ /**
78
+ * Load SKILL.md for its body content and frontmatter fields.
79
+ * Does NOT validate as a full ToolManifest — used only to extract
80
+ * agent-facing documentation in two-file mode (skill.yaml + SKILL.md).
81
+ */
82
+ function loadSkillDoc(filePath) {
83
+ try {
84
+ const content = readFileSync(filePath, "utf-8");
85
+ const extracted = extractFrontmatter(content);
86
+ if (!extracted)
87
+ return null;
88
+ const frontmatter = extracted.frontmatter
89
+ ? (yaml.load(extracted.frontmatter) ?? {})
90
+ : {};
91
+ return { body: extracted.body, frontmatter };
92
+ }
93
+ catch {
94
+ return null;
95
+ }
96
+ }
76
97
  /**
77
98
  * Find and load a manifest from a directory
78
99
  *
79
- * Searches for SKILL.md, enact.md, enact.yaml, or enact.yml in the given directory
100
+ * Supports two modes:
101
+ * 1. **Two-file model**: If both `skill.yaml` and `SKILL.md` exist, `skill.yaml` is
102
+ * the package manifest and `SKILL.md` provides agent-facing documentation (body → `doc`).
103
+ * Also supports legacy `enact.yaml` in place of `skill.yaml`.
104
+ * 2. **Single-file fallback**: Searches for SKILL.md, skill.yaml, skill.yml, enact.md, enact.yaml, or enact.yml
105
+ * and uses the first match as the complete manifest.
80
106
  *
81
107
  * @param dir - Directory to search for manifest
82
108
  * @param options - Options for loading and validation
@@ -84,7 +110,48 @@ export function loadManifest(filePath, options = {}) {
84
110
  * @throws ManifestLoadError if no manifest found or loading fails
85
111
  */
86
112
  export function loadManifestFromDir(dir, options = {}) {
87
- // Try each manifest filename in order of preference
113
+ const skillMdPath = join(dir, "SKILL.md");
114
+ const hasSkillMd = existsSync(skillMdPath);
115
+ // Find config file (skill.yaml, skill.yml, or legacy enact.yaml/enact.yml)
116
+ let enactConfigPath = null;
117
+ for (const f of ["skill.yaml", "skill.yml", "enact.yaml", "enact.yml"]) {
118
+ const p = join(dir, f);
119
+ if (existsSync(p)) {
120
+ enactConfigPath = p;
121
+ break;
122
+ }
123
+ }
124
+ // Two-file model: skill.yaml + SKILL.md
125
+ if (enactConfigPath && hasSkillMd) {
126
+ const loaded = loadManifest(enactConfigPath, options);
127
+ const skillDoc = loadSkillDoc(skillMdPath);
128
+ if (skillDoc) {
129
+ // Merge SKILL.md body into manifest.doc and LoadedManifest.body
130
+ loaded.manifest = { ...loaded.manifest };
131
+ if (skillDoc.body) {
132
+ if (!loaded.manifest.doc) {
133
+ loaded.manifest.doc = skillDoc.body;
134
+ }
135
+ loaded.body = skillDoc.body;
136
+ }
137
+ // Use SKILL.md frontmatter as fallbacks for shared fields
138
+ const fm = skillDoc.frontmatter;
139
+ if (!loaded.manifest.description && typeof fm.description === "string") {
140
+ loaded.manifest.description = fm.description;
141
+ }
142
+ if (!loaded.manifest.license && typeof fm.license === "string") {
143
+ loaded.manifest.license = fm.license;
144
+ }
145
+ if (!loaded.manifest.compatibility && typeof fm.compatibility === "string") {
146
+ loaded.manifest.compatibility = fm.compatibility;
147
+ }
148
+ if (!loaded.manifest.metadata && fm.metadata && typeof fm.metadata === "object") {
149
+ loaded.manifest.metadata = fm.metadata;
150
+ }
151
+ }
152
+ return loaded;
153
+ }
154
+ // Single-file fallback (existing behavior)
88
155
  for (const filename of MANIFEST_FILES) {
89
156
  const filePath = join(dir, filename);
90
157
  if (existsSync(filePath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/manifest/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/manifest/loader.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Handles parsing of:
5
5
  * - SKILL.md files (YAML frontmatter + Markdown body) - primary format
6
+ * - skill.yaml/yml files (pure YAML) - package manifest
6
7
  * - enact.yaml/yml files (pure YAML) - legacy format
7
8
  * - enact.md files (YAML frontmatter + Markdown body) - legacy format
8
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/manifest/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAgB,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC;gBAErC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAKnD;AAQD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,IAAI,CAcP;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,cAAc,CAsCrF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAc7D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CAGnF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/manifest/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAgB,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC;gBAErC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAKnD;AAQD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,IAAI,CAcP;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,cAAc,CAsCrF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAc7D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CAGnF"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Handles parsing of:
5
5
  * - SKILL.md files (YAML frontmatter + Markdown body) - primary format
6
+ * - skill.yaml/yml files (pure YAML) - package manifest
6
7
  * - enact.yaml/yml files (pure YAML) - legacy format
7
8
  * - enact.md files (YAML frontmatter + Markdown body) - legacy format
8
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/manifest/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/manifest/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Script-to-Action bridge
3
+ *
4
+ * Converts inline `scripts` from ToolManifest into Action/ActionsManifest
5
+ * objects so the existing execution pipeline works unchanged.
6
+ */
7
+ import type { Action, ActionsManifest } from "../types/actions";
8
+ import type { ScriptDefinition, ToolManifest } from "../types/manifest";
9
+ /**
10
+ * Convert a single script entry to an Action object
11
+ */
12
+ export declare function scriptToAction(name: string, script: ScriptDefinition): Action;
13
+ /**
14
+ * Convert all inline scripts from a manifest to an ActionsManifest
15
+ *
16
+ * Returns null if the manifest has no scripts.
17
+ */
18
+ export declare function manifestScriptsToActionsManifest(manifest: ToolManifest): ActionsManifest | null;
19
+ //# sourceMappingURL=scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../src/manifest/scripts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAiB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAmCxE;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAmB7E;AAwBD;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI,CAmB/F"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Script-to-Action bridge
3
+ *
4
+ * Converts inline `scripts` from ToolManifest into Action/ActionsManifest
5
+ * objects so the existing execution pipeline works unchanged.
6
+ */
7
+ import { getActionCommandParams } from "../execution/action-command";
8
+ /**
9
+ * Convert a script command string to array form
10
+ *
11
+ * Splits on whitespace while preserving {{param}} tokens as single elements.
12
+ */
13
+ function scriptCommandToArray(command) {
14
+ return command.split(/\s+/).filter((s) => s.length > 0);
15
+ }
16
+ /**
17
+ * Auto-infer an inputSchema from {{param}} patterns in a command array
18
+ *
19
+ * Every parameter found becomes a required string property.
20
+ */
21
+ function inferInputSchema(commandArray) {
22
+ const params = getActionCommandParams(commandArray);
23
+ if (params.length === 0) {
24
+ return { type: "object", properties: {} };
25
+ }
26
+ const properties = {};
27
+ for (const param of params) {
28
+ properties[param] = { type: "string" };
29
+ }
30
+ return {
31
+ type: "object",
32
+ required: params,
33
+ properties,
34
+ };
35
+ }
36
+ /**
37
+ * Convert a single script entry to an Action object
38
+ */
39
+ export function scriptToAction(name, script) {
40
+ if (typeof script === "string") {
41
+ const commandArray = scriptCommandToArray(script);
42
+ return {
43
+ description: name,
44
+ command: commandArray,
45
+ inputSchema: inferInputSchema(commandArray),
46
+ };
47
+ }
48
+ // Expanded form
49
+ const commandArray = scriptCommandToArray(script.command);
50
+ return {
51
+ description: script.description ?? name,
52
+ command: commandArray,
53
+ inputSchema: script.inputSchema ?? inferInputSchema(commandArray),
54
+ ...(script.outputSchema && { outputSchema: script.outputSchema }),
55
+ ...(script.annotations && { annotations: script.annotations }),
56
+ };
57
+ }
58
+ /**
59
+ * Convert manifest env (EnvVariables) to action env (ActionEnvVars)
60
+ */
61
+ function convertEnv(env) {
62
+ if (!env || Object.keys(env).length === 0)
63
+ return undefined;
64
+ const actionEnv = {};
65
+ for (const [key, value] of Object.entries(env)) {
66
+ const envVar = {
67
+ description: value.description,
68
+ };
69
+ if (value.secret !== undefined) {
70
+ envVar.secret = value.secret;
71
+ }
72
+ if (value.default !== undefined) {
73
+ envVar.default = value.default;
74
+ }
75
+ actionEnv[key] = envVar;
76
+ }
77
+ return actionEnv;
78
+ }
79
+ /**
80
+ * Convert all inline scripts from a manifest to an ActionsManifest
81
+ *
82
+ * Returns null if the manifest has no scripts.
83
+ */
84
+ export function manifestScriptsToActionsManifest(manifest) {
85
+ if (!manifest.scripts || Object.keys(manifest.scripts).length === 0) {
86
+ return null;
87
+ }
88
+ const actions = {};
89
+ for (const [name, script] of Object.entries(manifest.scripts)) {
90
+ actions[name] = scriptToAction(name, script);
91
+ }
92
+ const result = { actions };
93
+ const env = convertEnv(manifest.env);
94
+ if (env) {
95
+ result.env = env;
96
+ }
97
+ if (manifest.hooks?.build) {
98
+ result.build = manifest.hooks.build;
99
+ }
100
+ return result;
101
+ }
102
+ //# sourceMappingURL=scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/manifest/scripts.ts"],"names":[],"mappings":"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"}