@lesliechan721/aw-plugin-core 0.1.0-beta.1

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 (66) hide show
  1. package/dist/file-rules.d.ts +2 -0
  2. package/dist/file-rules.js +42 -0
  3. package/dist/file-rules.js.map +1 -0
  4. package/dist/generated/plugin-manifest-v1.d.ts +368 -0
  5. package/dist/generated/plugin-manifest-v1.js +3 -0
  6. package/dist/generated/plugin-manifest-v1.js.map +1 -0
  7. package/dist/hooks-contract.d.ts +189 -0
  8. package/dist/hooks-contract.js +967 -0
  9. package/dist/hooks-contract.js.map +1 -0
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.js +4 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/manifest-contract.d.ts +96 -0
  14. package/dist/manifest-contract.js +2730 -0
  15. package/dist/manifest-contract.js.map +1 -0
  16. package/dist/manifest-type-contract.d.ts +7 -0
  17. package/dist/manifest-type-contract.js +2 -0
  18. package/dist/manifest-type-contract.js.map +1 -0
  19. package/dist/manifest.d.ts +27 -0
  20. package/dist/manifest.js +59 -0
  21. package/dist/manifest.js.map +1 -0
  22. package/dist/permission-command.d.ts +3 -0
  23. package/dist/permission-command.js +11 -0
  24. package/dist/permission-command.js.map +1 -0
  25. package/dist/platform-entries.d.ts +13 -0
  26. package/dist/platform-entries.js +20 -0
  27. package/dist/platform-entries.js.map +1 -0
  28. package/dist/platform-support.d.ts +6 -0
  29. package/dist/platform-support.js +38 -0
  30. package/dist/platform-support.js.map +1 -0
  31. package/dist/plugin-release.d.ts +30 -0
  32. package/dist/plugin-release.js +187 -0
  33. package/dist/plugin-release.js.map +1 -0
  34. package/dist/plugin-script-contract.d.ts +33 -0
  35. package/dist/plugin-script-contract.js +599 -0
  36. package/dist/plugin-script-contract.js.map +1 -0
  37. package/dist/portable-skill-validation.d.ts +7 -0
  38. package/dist/portable-skill-validation.js +111 -0
  39. package/dist/portable-skill-validation.js.map +1 -0
  40. package/dist/read-json.d.ts +1 -0
  41. package/dist/read-json.js +5 -0
  42. package/dist/read-json.js.map +1 -0
  43. package/dist/runtime-export-source.d.ts +14 -0
  44. package/dist/runtime-export-source.js +73 -0
  45. package/dist/runtime-export-source.js.map +1 -0
  46. package/dist/skill-authoring.d.ts +2 -0
  47. package/dist/skill-authoring.js +13 -0
  48. package/dist/skill-authoring.js.map +1 -0
  49. package/dist/skill-frontmatter-capabilities.d.ts +36 -0
  50. package/dist/skill-frontmatter-capabilities.js +120 -0
  51. package/dist/skill-frontmatter-capabilities.js.map +1 -0
  52. package/dist/skill-frontmatter-capabilities.json +200 -0
  53. package/dist/slash-commands.d.ts +43 -0
  54. package/dist/slash-commands.js +394 -0
  55. package/dist/slash-commands.js.map +1 -0
  56. package/dist/template-engine.d.ts +2 -0
  57. package/dist/template-engine.js +26 -0
  58. package/dist/template-engine.js.map +1 -0
  59. package/dist/types.d.ts +428 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/workspace.d.ts +105 -0
  63. package/dist/workspace.js +963 -0
  64. package/dist/workspace.js.map +1 -0
  65. package/package.json +46 -0
  66. package/schemas/plugin-manifest-v1.json +329 -0
@@ -0,0 +1,599 @@
1
+ import { builtinModules } from 'node:module';
2
+ import path from 'node:path';
3
+ export const PLUGIN_LIFECYCLE_EVENTS = ['install', 'upgrade', 'uninstall'];
4
+ export const PLUGIN_LIFECYCLE_OS_SELECTORS = [
5
+ 'default',
6
+ 'unix',
7
+ 'windows',
8
+ 'linux',
9
+ 'darwin',
10
+ 'win32',
11
+ ];
12
+ export const PLUGIN_SCRIPT_RUNNERS = [
13
+ 'node',
14
+ 'sh',
15
+ 'bash',
16
+ 'pwsh',
17
+ 'powershell',
18
+ 'cmd',
19
+ 'auto',
20
+ ];
21
+ export const PLUGIN_AUTO_RUNNER_EXTENSIONS = [
22
+ '.js',
23
+ '.mjs',
24
+ '.cjs',
25
+ '.sh',
26
+ '.ps1',
27
+ '.cmd',
28
+ '.bat',
29
+ ];
30
+ export const PLUGIN_SCRIPT_TIMEOUT_DEFAULT_MS = 30_000;
31
+ export const PLUGIN_SCRIPT_TIMEOUT_MIN_MS = 1_000;
32
+ export const PLUGIN_SCRIPT_TIMEOUT_MAX_MS = 300_000;
33
+ export function isPluginLifecycleOsSelector(value) {
34
+ return PLUGIN_LIFECYCLE_OS_SELECTORS.includes(value);
35
+ }
36
+ export function isPluginScriptRunner(value) {
37
+ return PLUGIN_SCRIPT_RUNNERS.includes(value);
38
+ }
39
+ export function getLifecycleSelectorOrder(os) {
40
+ if (os === 'linux') {
41
+ return ['linux', 'unix', 'default'];
42
+ }
43
+ if (os === 'darwin') {
44
+ return ['darwin', 'unix', 'default'];
45
+ }
46
+ return ['win32', 'windows', 'default'];
47
+ }
48
+ export function resolveLifecycleScriptForOs(selector, os) {
49
+ for (const key of getLifecycleSelectorOrder(os)) {
50
+ const entry = selector[key];
51
+ if (entry) {
52
+ return entry;
53
+ }
54
+ }
55
+ return undefined;
56
+ }
57
+ export function inferLifecycleScriptRunnerFromPath(scriptPath) {
58
+ const extension = path.posix.extname(scriptPath).toLowerCase();
59
+ if (extension === '.js' || extension === '.mjs' || extension === '.cjs') {
60
+ return 'node';
61
+ }
62
+ if (extension === '.sh') {
63
+ return 'sh';
64
+ }
65
+ if (extension === '.ps1') {
66
+ return 'powershell';
67
+ }
68
+ if (extension === '.cmd' || extension === '.bat') {
69
+ return 'cmd';
70
+ }
71
+ return undefined;
72
+ }
73
+ const REGEX_AFTER_CONTROL_HEADER = new Set([
74
+ 'catch',
75
+ 'for',
76
+ 'if',
77
+ 'switch',
78
+ 'while',
79
+ 'with',
80
+ ]);
81
+ const NODE_BUILTIN_SPECIFIERS = new Set(builtinModules);
82
+ function isJavaScriptIdentifierStart(value) {
83
+ return value !== undefined && /[A-Za-z_$]/u.test(value);
84
+ }
85
+ function isJavaScriptIdentifierPart(value) {
86
+ return value !== undefined && /[A-Za-z0-9_$]/u.test(value);
87
+ }
88
+ function decodeJavaScriptEscape(source, index) {
89
+ const escaped = source[index];
90
+ const simple = {
91
+ b: '\b',
92
+ f: '\f',
93
+ n: '\n',
94
+ r: '\r',
95
+ t: '\t',
96
+ v: '\v',
97
+ '0': '\0',
98
+ };
99
+ if (escaped === '\n')
100
+ return { value: '', next: index + 1 };
101
+ if (escaped === '\r') {
102
+ return { value: '', next: source[index + 1] === '\n' ? index + 2 : index + 1 };
103
+ }
104
+ if (escaped && Object.prototype.hasOwnProperty.call(simple, escaped)) {
105
+ return { value: simple[escaped], next: index + 1 };
106
+ }
107
+ if (escaped === 'x') {
108
+ const hex = source.slice(index + 1, index + 3);
109
+ if (/^[0-9A-Fa-f]{2}$/u.test(hex)) {
110
+ return { value: String.fromCodePoint(Number.parseInt(hex, 16)), next: index + 3 };
111
+ }
112
+ }
113
+ if (escaped === 'u') {
114
+ if (source[index + 1] === '{') {
115
+ const close = source.indexOf('}', index + 2);
116
+ const hex = close === -1 ? '' : source.slice(index + 2, close);
117
+ if (/^[0-9A-Fa-f]{1,6}$/u.test(hex)) {
118
+ return { value: String.fromCodePoint(Number.parseInt(hex, 16)), next: close + 1 };
119
+ }
120
+ }
121
+ else {
122
+ const hex = source.slice(index + 1, index + 5);
123
+ if (/^[0-9A-Fa-f]{4}$/u.test(hex)) {
124
+ return { value: String.fromCodePoint(Number.parseInt(hex, 16)), next: index + 5 };
125
+ }
126
+ }
127
+ }
128
+ return { value: escaped ?? '', next: Math.min(index + 1, source.length) };
129
+ }
130
+ function tokenizeJavaScriptImports(source) {
131
+ const tokens = [];
132
+ let index = 0;
133
+ let previousToken;
134
+ const push = (token) => {
135
+ tokens.push(token);
136
+ previousToken = token;
137
+ };
138
+ const skipQuotedString = (quote) => {
139
+ index += 1;
140
+ let value = '';
141
+ while (index < source.length) {
142
+ const current = source[index];
143
+ if (current === quote) {
144
+ index += 1;
145
+ push({ kind: 'string', value });
146
+ return;
147
+ }
148
+ if (current === '\\') {
149
+ const decoded = decodeJavaScriptEscape(source, index + 1);
150
+ value += decoded.value;
151
+ index = decoded.next;
152
+ continue;
153
+ }
154
+ value += current;
155
+ index += 1;
156
+ }
157
+ };
158
+ const canStartRegexLiteral = () => {
159
+ if (!previousToken)
160
+ return true;
161
+ if (previousToken.canStartRegexAfter !== undefined) {
162
+ return previousToken.canStartRegexAfter;
163
+ }
164
+ if (previousToken.kind === 'identifier') {
165
+ return new Set([
166
+ 'await', 'case', 'delete', 'do', 'else', 'in', 'instanceof', 'new',
167
+ 'return', 'throw', 'typeof', 'void', 'yield',
168
+ ]).has(previousToken.value);
169
+ }
170
+ return previousToken.kind === 'punctuation'
171
+ && ['(', '[', '{', '=', ':', ',', ';', '!', '&', '|', '?', '~', '+', '-', '*', '%', '^', '<', '>']
172
+ .includes(previousToken.value);
173
+ };
174
+ const skipRegexLiteral = () => {
175
+ index += 1;
176
+ let inCharacterClass = false;
177
+ while (index < source.length) {
178
+ const current = source[index];
179
+ if (current === '\\') {
180
+ index = Math.min(index + 2, source.length);
181
+ continue;
182
+ }
183
+ if (current === '[')
184
+ inCharacterClass = true;
185
+ if (current === ']')
186
+ inCharacterClass = false;
187
+ index += 1;
188
+ if (current === '/' && !inCharacterClass) {
189
+ while (/[A-Za-z]/u.test(source[index] ?? ''))
190
+ index += 1;
191
+ push({ kind: 'literal', value: 'regex' });
192
+ return;
193
+ }
194
+ if (current === '\n' || current === '\r')
195
+ return;
196
+ }
197
+ };
198
+ const scanCode = (stopAtTemplateExpressionEnd) => {
199
+ let braceDepth = 0;
200
+ const blockBraceStack = [];
201
+ const controlParenStack = [];
202
+ while (index < source.length) {
203
+ const current = source[index];
204
+ const next = source[index + 1];
205
+ if (/\s/u.test(current)) {
206
+ index += 1;
207
+ continue;
208
+ }
209
+ if (current === '/' && next === '/') {
210
+ index += 2;
211
+ while (index < source.length && source[index] !== '\n' && source[index] !== '\r')
212
+ index += 1;
213
+ continue;
214
+ }
215
+ if (current === '/' && next === '*') {
216
+ index += 2;
217
+ while (index < source.length && !(source[index] === '*' && source[index + 1] === '/'))
218
+ index += 1;
219
+ index = Math.min(index + 2, source.length);
220
+ continue;
221
+ }
222
+ if (current === '\'' || current === '"') {
223
+ skipQuotedString(current);
224
+ continue;
225
+ }
226
+ if (current === '`') {
227
+ index += 1;
228
+ let value = '';
229
+ let dynamic = false;
230
+ while (index < source.length) {
231
+ if (source[index] === '\\') {
232
+ const decoded = decodeJavaScriptEscape(source, index + 1);
233
+ value += decoded.value;
234
+ index = decoded.next;
235
+ }
236
+ else if (source[index] === '`') {
237
+ index += 1;
238
+ if (!dynamic) {
239
+ push({ kind: 'string', value });
240
+ }
241
+ break;
242
+ }
243
+ else if (source[index] === '$' && source[index + 1] === '{') {
244
+ if (!dynamic) {
245
+ push({ kind: 'dynamic-template', value: 'template' });
246
+ dynamic = true;
247
+ }
248
+ index += 2;
249
+ const outerPrevious = previousToken;
250
+ previousToken = undefined;
251
+ scanCode(true);
252
+ previousToken = outerPrevious;
253
+ }
254
+ else {
255
+ value += source[index];
256
+ index += 1;
257
+ }
258
+ }
259
+ continue;
260
+ }
261
+ if (current === '/' && canStartRegexLiteral()) {
262
+ skipRegexLiteral();
263
+ continue;
264
+ }
265
+ if (isJavaScriptIdentifierStart(current)) {
266
+ const start = index;
267
+ index += 1;
268
+ while (isJavaScriptIdentifierPart(source[index]))
269
+ index += 1;
270
+ push({ kind: 'identifier', value: source.slice(start, index) });
271
+ continue;
272
+ }
273
+ if (/[0-9]/u.test(current)) {
274
+ index += 1;
275
+ while (/[A-Za-z0-9_.]/u.test(source[index] ?? ''))
276
+ index += 1;
277
+ push({ kind: 'literal', value: 'number' });
278
+ continue;
279
+ }
280
+ if (current === '{') {
281
+ const isBlock = !previousToken
282
+ || (previousToken.kind === 'identifier'
283
+ && ['do', 'else', 'finally', 'try'].includes(previousToken.value))
284
+ || (previousToken.kind === 'punctuation'
285
+ && [';', '}', ')', '>'].includes(previousToken.value));
286
+ blockBraceStack.push(isBlock);
287
+ braceDepth += 1;
288
+ index += 1;
289
+ push({ kind: 'punctuation', value: current });
290
+ continue;
291
+ }
292
+ if (current === '}') {
293
+ if (stopAtTemplateExpressionEnd && braceDepth === 0) {
294
+ index += 1;
295
+ return;
296
+ }
297
+ braceDepth = Math.max(0, braceDepth - 1);
298
+ index += 1;
299
+ push({
300
+ kind: 'punctuation',
301
+ value: current,
302
+ canStartRegexAfter: blockBraceStack.pop() ?? false,
303
+ });
304
+ continue;
305
+ }
306
+ if (current === '(') {
307
+ controlParenStack.push(previousToken?.kind === 'identifier'
308
+ && REGEX_AFTER_CONTROL_HEADER.has(previousToken.value));
309
+ index += 1;
310
+ push({ kind: 'punctuation', value: current });
311
+ continue;
312
+ }
313
+ if (current === ')') {
314
+ index += 1;
315
+ push({
316
+ kind: 'punctuation',
317
+ value: current,
318
+ canStartRegexAfter: controlParenStack.pop() ?? false,
319
+ });
320
+ continue;
321
+ }
322
+ if ((current === '+' || current === '-') && next === current) {
323
+ index += 2;
324
+ push({
325
+ kind: 'punctuation',
326
+ value: `${current}${current}`,
327
+ canStartRegexAfter: false,
328
+ });
329
+ continue;
330
+ }
331
+ index += 1;
332
+ push({ kind: 'punctuation', value: current });
333
+ }
334
+ };
335
+ scanCode(false);
336
+ return tokens;
337
+ }
338
+ export function scanJavaScriptImportSpecifiers(source) {
339
+ const references = [];
340
+ const tokens = tokenizeJavaScriptImports(source);
341
+ const callSpecifier = (argumentIndex) => {
342
+ const specifier = tokens[argumentIndex];
343
+ const following = tokens[argumentIndex + 1];
344
+ if (specifier?.kind === 'string'
345
+ && (following?.value === ')' || following?.value === ',')) {
346
+ return { specifier: specifier.value };
347
+ }
348
+ return { specifier: '', dynamic: true };
349
+ };
350
+ let pendingStatic;
351
+ for (let index = 0; index < tokens.length; index += 1) {
352
+ const token = tokens[index];
353
+ const previous = tokens[index - 1];
354
+ if (token.value === ';')
355
+ pendingStatic = undefined;
356
+ if (pendingStatic && token.kind === 'identifier' && token.value === 'from') {
357
+ const specifier = tokens[index + 1];
358
+ if (specifier?.kind === 'string') {
359
+ references.push({ specifier: specifier.value, kind: pendingStatic });
360
+ }
361
+ pendingStatic = undefined;
362
+ continue;
363
+ }
364
+ if (token.kind === 'identifier'
365
+ && token.value === 'module'
366
+ && previous?.value !== '.'
367
+ && tokens[index + 1]?.value === '.'
368
+ && tokens[index + 2]?.kind === 'identifier'
369
+ && tokens[index + 2]?.value === 'require'
370
+ && tokens[index + 3]?.value === '(') {
371
+ references.push({ ...callSpecifier(index + 4), kind: 'require' });
372
+ continue;
373
+ }
374
+ if (token.kind !== 'identifier' || previous?.value === '.')
375
+ continue;
376
+ if (token.value === 'require' && tokens[index + 1]?.value === '(') {
377
+ references.push({ ...callSpecifier(index + 2), kind: 'require' });
378
+ continue;
379
+ }
380
+ if (token.value === 'require'
381
+ && tokens[index + 1]?.value === '.'
382
+ && tokens[index + 2]?.kind === 'identifier'
383
+ && tokens[index + 2]?.value === 'resolve'
384
+ && tokens[index + 3]?.value === '(') {
385
+ references.push({ ...callSpecifier(index + 4), kind: 'require-resolve' });
386
+ continue;
387
+ }
388
+ if (token.value !== 'import' && token.value !== 'export')
389
+ continue;
390
+ pendingStatic = undefined;
391
+ if (token.value === 'import' && tokens[index + 1]?.value === '(') {
392
+ references.push({ ...callSpecifier(index + 2), kind: 'dynamic-import' });
393
+ continue;
394
+ }
395
+ if (token.value === 'import' && tokens[index + 1]?.kind === 'string') {
396
+ references.push({ specifier: tokens[index + 1].value, kind: 'import' });
397
+ continue;
398
+ }
399
+ pendingStatic = token.value;
400
+ }
401
+ return references;
402
+ }
403
+ function normalizePluginFilePath(value) {
404
+ const withoutDotSlash = value.startsWith('./') ? value.slice(2) : value;
405
+ return path.posix.normalize(withoutDotSlash);
406
+ }
407
+ function isRelativeSpecifier(specifier) {
408
+ return specifier === '.' || specifier === '..' || specifier.startsWith('./') || specifier.startsWith('../');
409
+ }
410
+ function isBareSpecifier(specifier) {
411
+ return !isRelativeSpecifier(specifier) && !specifier.startsWith('/') && !specifier.startsWith('node:');
412
+ }
413
+ function isNodeBuiltinSpecifier(specifier) {
414
+ return NODE_BUILTIN_SPECIFIERS.has(specifier)
415
+ || (specifier.startsWith('node:') && NODE_BUILTIN_SPECIFIERS.has(specifier.slice('node:'.length)));
416
+ }
417
+ function getPackageName(specifier) {
418
+ if (specifier.startsWith('@')) {
419
+ const [scope, name] = specifier.split('/');
420
+ return `${scope}/${name ?? ''}`;
421
+ }
422
+ return specifier.split('/')[0] ?? specifier;
423
+ }
424
+ const NODE_IMPORT_SOURCE_EXTENSIONS = new Set(['.js', '.mjs', '.cjs']);
425
+ const NODE_IMPORT_LEAF_EXTENSIONS = new Set(['.json']);
426
+ function isSupportedNodeImportFile(file) {
427
+ const extension = path.posix.extname(file).toLowerCase();
428
+ return NODE_IMPORT_SOURCE_EXTENSIONS.has(extension)
429
+ || NODE_IMPORT_LEAF_EXTENSIONS.has(extension);
430
+ }
431
+ function isNodeImportLeafFile(file) {
432
+ return NODE_IMPORT_LEAF_EXTENSIONS.has(path.posix.extname(file).toLowerCase());
433
+ }
434
+ function resolveRelativeFile(importer, specifier, filePaths, files, importKind) {
435
+ const resolved = path.posix.normalize(path.posix.join(path.posix.dirname(importer), specifier));
436
+ if (resolved === '..' || resolved.startsWith('../') || path.posix.isAbsolute(resolved)) {
437
+ return { file: resolved };
438
+ }
439
+ const commonJs = importKind === 'require' || importKind === 'require-resolve';
440
+ if (!commonJs) {
441
+ return { file: filePaths.has(resolved) ? resolved : undefined };
442
+ }
443
+ const resolveAsFile = (target) => ([target, `${target}.js`, `${target}.json`, `${target}.node`]
444
+ .find((candidate) => filePaths.has(candidate)));
445
+ const resolveAsIndex = (directory) => (['index.js', 'index.json', 'index.node']
446
+ .map((fileName) => path.posix.join(directory, fileName))
447
+ .find((candidate) => filePaths.has(candidate)));
448
+ const exactFile = resolveAsFile(resolved);
449
+ if (exactFile) {
450
+ return { file: exactFile };
451
+ }
452
+ const resolveAsDirectory = (directory) => {
453
+ const packageJsonPath = path.posix.join(directory, 'package.json');
454
+ const supportingFiles = [];
455
+ if (filePaths.has(packageJsonPath)) {
456
+ supportingFiles.push(packageJsonPath);
457
+ const packageJsonSource = files[packageJsonPath];
458
+ let packageJson;
459
+ try {
460
+ packageJson = packageJsonSource === undefined ? undefined : JSON.parse(packageJsonSource);
461
+ }
462
+ catch {
463
+ return {
464
+ error: `Invalid CommonJS package manifest "${packageJsonPath}" resolved from "${specifier}" in "${importer}".`,
465
+ };
466
+ }
467
+ if (!packageJson || typeof packageJson !== 'object' || Array.isArray(packageJson)) {
468
+ return {
469
+ error: `Invalid CommonJS package manifest "${packageJsonPath}" resolved from "${specifier}" in "${importer}".`,
470
+ };
471
+ }
472
+ if (Object.prototype.hasOwnProperty.call(packageJson, 'main')) {
473
+ const main = packageJson.main;
474
+ if (typeof main !== 'string'
475
+ || main.length === 0
476
+ || main.includes('\0')
477
+ || main.includes('\\')
478
+ || path.posix.isAbsolute(main)
479
+ || path.win32.isAbsolute(main)
480
+ || /^[A-Za-z][A-Za-z0-9+.-]*:/u.test(main)) {
481
+ return {
482
+ error: `Invalid CommonJS package main in "${packageJsonPath}" resolved from "${specifier}" in "${importer}".`,
483
+ };
484
+ }
485
+ const normalizedMain = path.posix.normalize(main);
486
+ const mainTarget = path.posix.join(directory, normalizedMain);
487
+ if (mainTarget === '..' || mainTarget.startsWith('../') || path.posix.isAbsolute(mainTarget)) {
488
+ return {
489
+ error: `CommonJS package main "${main}" in "${packageJsonPath}" escapes the plugin root.`,
490
+ };
491
+ }
492
+ const mainFile = resolveAsFile(mainTarget);
493
+ if (mainFile) {
494
+ return { file: mainFile, supportingFiles };
495
+ }
496
+ const mainIndex = resolveAsIndex(mainTarget);
497
+ if (mainIndex) {
498
+ return {
499
+ file: mainIndex,
500
+ supportingFiles,
501
+ };
502
+ }
503
+ }
504
+ }
505
+ const indexFile = resolveAsIndex(directory);
506
+ return { file: indexFile, supportingFiles };
507
+ };
508
+ return resolveAsDirectory(resolved);
509
+ }
510
+ export function scanNodeImportContract(options) {
511
+ const files = Object.fromEntries(Object.entries(options.files).map(([file, source]) => [normalizePluginFilePath(file), source]));
512
+ const filePaths = new Set([
513
+ ...Object.keys(files),
514
+ ...(options.filePaths ?? []).map(normalizePluginFilePath),
515
+ ]);
516
+ const dependencies = new Set(options.dependencies ?? []);
517
+ const devDependencies = new Set(options.devDependencies ?? []);
518
+ const queue = options.entryFiles.map(normalizePluginFilePath);
519
+ const visited = new Set();
520
+ const bareSpecifiers = new Set();
521
+ const errors = [];
522
+ while (queue.length > 0) {
523
+ const file = queue.shift();
524
+ if (!file || visited.has(file)) {
525
+ continue;
526
+ }
527
+ visited.add(file);
528
+ if (!filePaths.has(file)) {
529
+ errors.push(`Missing runtime import file "${file}".`);
530
+ continue;
531
+ }
532
+ if (isNodeImportLeafFile(file)) {
533
+ continue;
534
+ }
535
+ const source = files[file];
536
+ if (source === undefined) {
537
+ errors.push(`Missing runtime import file "${file}".`);
538
+ continue;
539
+ }
540
+ for (const reference of scanJavaScriptImportSpecifiers(source)) {
541
+ const { specifier } = reference;
542
+ if (reference.dynamic) {
543
+ const kind = reference.kind === 'require-resolve'
544
+ ? 'require.resolve'
545
+ : reference.kind === 'dynamic-import' ? 'import' : reference.kind;
546
+ errors.push(`Dynamic ${kind} specifier in "${file}" is not supported.`);
547
+ continue;
548
+ }
549
+ if (isNodeBuiltinSpecifier(specifier)) {
550
+ continue;
551
+ }
552
+ if (isRelativeSpecifier(specifier)) {
553
+ const resolution = resolveRelativeFile(file, specifier, filePaths, files, reference.kind);
554
+ if (resolution.error) {
555
+ errors.push(resolution.error);
556
+ continue;
557
+ }
558
+ const resolved = resolution.file;
559
+ if (!resolved) {
560
+ errors.push(`Unable to resolve relative import "${specifier}" from "${file}".`);
561
+ continue;
562
+ }
563
+ if (resolved === '..' || resolved.startsWith('../') || path.posix.isAbsolute(resolved)) {
564
+ errors.push(`Relative import "${specifier}" from "${file}" escapes the plugin root.`);
565
+ continue;
566
+ }
567
+ if (!isSupportedNodeImportFile(resolved)) {
568
+ errors.push(`Unsupported runtime import file "${resolved}" resolved from "${specifier}" in "${file}".`);
569
+ continue;
570
+ }
571
+ queue.push(...(resolution.supportingFiles ?? []));
572
+ queue.push(resolved);
573
+ continue;
574
+ }
575
+ if (!isBareSpecifier(specifier)) {
576
+ errors.push(`Unsupported import specifier "${specifier}" from "${file}".`);
577
+ continue;
578
+ }
579
+ const packageName = getPackageName(specifier);
580
+ bareSpecifiers.add(packageName);
581
+ if (dependencies.has(packageName)) {
582
+ continue;
583
+ }
584
+ if (devDependencies.has(packageName)) {
585
+ if (!options.allowDevDependencies) {
586
+ errors.push(`Runtime import "${specifier}" from "${file}" uses dev dependency "${packageName}".`);
587
+ }
588
+ continue;
589
+ }
590
+ errors.push(`Runtime import "${specifier}" from "${file}" is not declared in dependencies.`);
591
+ }
592
+ }
593
+ return {
594
+ files: [...visited].sort(),
595
+ bareSpecifiers: [...bareSpecifiers].sort(),
596
+ errors,
597
+ };
598
+ }
599
+ //# sourceMappingURL=plugin-script-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-script-contract.js","sourceRoot":"","sources":["../src/plugin-script-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface PortableSkillTree {
2
+ skillKey: string;
3
+ files: Record<string, Buffer>;
4
+ }
5
+ export declare function validatePortableSkillName(value: string, fieldName?: string): void;
6
+ export declare function validatePortableSkillDirectory(rootDir: string): Promise<PortableSkillTree>;
7
+ export declare function validatePortableSkillDirectoriesRoot(rootDir: string): Promise<PortableSkillTree[]>;