@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,187 @@
1
+ import { assertStrictSemVer, compareStrictSemVer, parseStrictSemVer, } from './manifest-contract.js';
2
+ export const PLUGIN_RELEASE_LEDGER_FILENAME = 'plugin-release-ledger.json';
3
+ export const PLUGIN_RELEASE_LEDGER_SCHEMA_VERSION = 2;
4
+ const PLUGIN_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
5
+ const SHA256_DIGEST_PATTERN = /^sha256:[0-9a-f]{64}$/u;
6
+ function assertPlainObject(value, fieldName) {
7
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
8
+ throw new Error(`Invalid ${fieldName}: expected a JSON object.`);
9
+ }
10
+ return value;
11
+ }
12
+ function assertAllowedKeys(value, fieldName, allowedKeys) {
13
+ const allowed = new Set(allowedKeys);
14
+ for (const key of Object.keys(value)) {
15
+ if (!allowed.has(key))
16
+ throw new Error(`Invalid ${fieldName}: unknown field ${JSON.stringify(key)}.`);
17
+ }
18
+ }
19
+ function assertPluginName(value, fieldName) {
20
+ if (typeof value !== 'string' || !PLUGIN_NAME_PATTERN.test(value)) {
21
+ throw new Error(`Invalid ${fieldName}: expected lowercase hyphen-case.`);
22
+ }
23
+ return value;
24
+ }
25
+ function assertDigest(value, fieldName) {
26
+ if (typeof value !== 'string' || !SHA256_DIGEST_PATTERN.test(value)) {
27
+ throw new Error(`Invalid ${fieldName}: expected a canonical sha256 digest.`);
28
+ }
29
+ return value;
30
+ }
31
+ export function assertStablePluginVersion(version, fieldName = 'plugin version') {
32
+ const parsed = parseStrictSemVer(version, fieldName);
33
+ if (parsed.prerelease.length > 0 || parsed.build.length > 0) {
34
+ throw new Error(`Invalid ${fieldName}: expected a stable SemVer without prerelease or build metadata.`);
35
+ }
36
+ return version;
37
+ }
38
+ function identityKey(record) {
39
+ return `${record.plugin}@${record.version}`;
40
+ }
41
+ function recordKey(record) {
42
+ return JSON.stringify([record.channel, record.catalogVersion, record.plugin, record.version]);
43
+ }
44
+ function sameDigests(left, right) {
45
+ return left.artifactDigest === right.artifactDigest
46
+ && left.manifestDigest === right.manifestDigest
47
+ && left.contentDigest === right.contentDigest;
48
+ }
49
+ function validateRecord(rawValue, index) {
50
+ const raw = assertPlainObject(rawValue, `plugin release ledger.records[${index}]`);
51
+ assertAllowedKeys(raw, `plugin release ledger.records[${index}]`, [
52
+ 'plugin', 'version', 'contentDigest', 'artifactDigest', 'manifestDigest', 'channel', 'catalogVersion',
53
+ ]);
54
+ if (raw.channel !== 'latest' && raw.channel !== 'beta') {
55
+ throw new Error(`Invalid plugin release ledger.records[${index}].channel.`);
56
+ }
57
+ return {
58
+ plugin: assertPluginName(raw.plugin, `plugin release ledger.records[${index}].plugin`),
59
+ version: assertStrictSemVer(raw.version, `plugin release ledger.records[${index}].version`),
60
+ contentDigest: raw.contentDigest === null ? null : assertDigest(raw.contentDigest, `plugin release ledger.records[${index}].contentDigest`),
61
+ artifactDigest: assertDigest(raw.artifactDigest, `plugin release ledger.records[${index}].artifactDigest`),
62
+ manifestDigest: assertDigest(raw.manifestDigest, `plugin release ledger.records[${index}].manifestDigest`),
63
+ channel: raw.channel,
64
+ catalogVersion: assertStrictSemVer(raw.catalogVersion, `plugin release ledger.records[${index}].catalogVersion`),
65
+ };
66
+ }
67
+ export function validatePluginReleaseLedger(rawValue) {
68
+ const raw = assertPlainObject(rawValue, 'plugin release ledger');
69
+ assertAllowedKeys(raw, 'plugin release ledger', ['schemaVersion', 'records']);
70
+ if (raw.schemaVersion !== 2 || !Array.isArray(raw.records)) {
71
+ throw new Error('Invalid plugin release ledger: expected schemaVersion 2 and records array.');
72
+ }
73
+ const byRecord = new Map();
74
+ const byIdentity = new Map();
75
+ for (const record of raw.records.map(validateRecord)) {
76
+ const duplicate = byRecord.get(recordKey(record));
77
+ if (duplicate) {
78
+ if (!sameDigests(duplicate, record))
79
+ throw new Error(`Plugin publication record for ${identityKey(record)} contains conflicting digests.`);
80
+ continue;
81
+ }
82
+ const identity = byIdentity.get(identityKey(record));
83
+ if (identity && !sameDigests(identity, record))
84
+ throw new Error(`Plugin release identity ${identityKey(record)} maps to different digests.`);
85
+ byRecord.set(recordKey(record), record);
86
+ byIdentity.set(identityKey(record), record);
87
+ }
88
+ return {
89
+ schemaVersion: 2,
90
+ records: [...byRecord.values()].sort((left, right) => left.plugin.localeCompare(right.plugin)
91
+ || compareStrictSemVer(left.version, right.version)
92
+ || left.channel.localeCompare(right.channel)
93
+ || compareStrictSemVer(left.catalogVersion, right.catalogVersion)),
94
+ };
95
+ }
96
+ export function validatePluginReleaseLedgerAgainstManifest(rawLedger, manifest) {
97
+ const ledger = validatePluginReleaseLedger(rawLedger);
98
+ for (const entry of manifest.entries) {
99
+ const records = ledger.records.filter((record) => record.plugin === entry.name
100
+ && record.version === entry.version
101
+ && record.channel === manifest.channel
102
+ && record.catalogVersion === manifest.catalogVersion);
103
+ if (records.length !== 1
104
+ || records[0].artifactDigest !== entry.artifactDigest
105
+ || records[0].manifestDigest !== entry.manifestDigest
106
+ || records[0].contentDigest !== entry.contentDigest) {
107
+ throw new Error(`Plugin release ledger does not match catalog entry ${entry.name}@${entry.version}.`);
108
+ }
109
+ }
110
+ const current = ledger.records.filter((record) => record.channel === manifest.channel
111
+ && record.catalogVersion === manifest.catalogVersion);
112
+ if (current.length !== manifest.entries.length) {
113
+ throw new Error('Plugin release ledger contains unexpected records for the current catalog.');
114
+ }
115
+ return ledger;
116
+ }
117
+ export function mergePluginReleaseLedgers(...ledgers) {
118
+ return validatePluginReleaseLedger({
119
+ schemaVersion: PLUGIN_RELEASE_LEDGER_SCHEMA_VERSION,
120
+ records: ledgers.flatMap((ledger) => ledger?.records ?? []),
121
+ });
122
+ }
123
+ export function resolveBetaPluginVersionOverrides(options) {
124
+ const ledger = validatePluginReleaseLedger(options.ledger);
125
+ const overrides = {};
126
+ for (const plugin of options.plugins) {
127
+ const name = plugin.manifest.name;
128
+ const target = assertStablePluginVersion(plugin.manifest.version, `${name} source version`);
129
+ const contentDigest = options.contentDigests.get(name);
130
+ if (!contentDigest)
131
+ throw new Error(`Missing release content digest for plugin ${JSON.stringify(name)}.`);
132
+ const stable = ledger.records.find((record) => record.plugin === name && record.version === target);
133
+ if (stable) {
134
+ if (stable.contentDigest !== contentDigest) {
135
+ throw new Error(`Plugin release identity ${name}@${target} maps to different content. Increase the source plugin version.`);
136
+ }
137
+ continue;
138
+ }
139
+ const prefix = `${target}-beta.`;
140
+ const betas = ledger.records.filter((record) => record.plugin === name && record.version.startsWith(prefix)
141
+ && /^\d+$/u.test(record.version.slice(prefix.length)));
142
+ const highest = betas.reduce((value, record) => Math.max(value, Number(record.version.slice(prefix.length))), 0);
143
+ const latest = betas.find((record) => Number(record.version.slice(prefix.length)) === highest);
144
+ overrides[name] = latest?.contentDigest === contentDigest ? latest.version : `${prefix}${highest + 1}`;
145
+ }
146
+ return overrides;
147
+ }
148
+ export function appendCatalogToPluginReleaseLedger(options) {
149
+ const previous = validatePluginReleaseLedger(options.previous);
150
+ const records = [...previous.records];
151
+ for (const entry of options.manifest.entries) {
152
+ const contentDigest = options.contentDigests.get(entry.name);
153
+ if (!contentDigest)
154
+ throw new Error(`Missing release content digest for plugin ${JSON.stringify(entry.name)}.`);
155
+ const candidate = {
156
+ plugin: entry.name,
157
+ version: entry.version,
158
+ contentDigest,
159
+ artifactDigest: entry.artifactDigest,
160
+ manifestDigest: entry.manifestDigest,
161
+ channel: options.manifest.channel,
162
+ catalogVersion: options.manifest.catalogVersion,
163
+ };
164
+ const exact = records.find((record) => recordKey(record) === recordKey(candidate));
165
+ const identity = records.find((record) => identityKey(record) === identityKey(candidate));
166
+ const highest = records.filter((record) => record.plugin === candidate.plugin)
167
+ .reduce((current, record) => !current
168
+ || compareStrictSemVer(record.version, current.version) > 0 ? record : current, null);
169
+ if (exact) {
170
+ if (!sameDigests(exact, candidate))
171
+ throw new Error(`Plugin publication record for ${identityKey(candidate)} contains conflicting digests.`);
172
+ continue;
173
+ }
174
+ if (identity && !sameDigests(identity, candidate))
175
+ throw new Error(`Plugin release identity ${identityKey(candidate)} maps to different digests.`);
176
+ if (highest && (identity
177
+ ? compareStrictSemVer(candidate.version, highest.version) < 0
178
+ : compareStrictSemVer(candidate.version, highest.version) <= 0)) {
179
+ throw new Error(identity
180
+ ? `Plugin ${candidate.plugin} version ${candidate.version} must not be lower than published ${highest.version}.`
181
+ : `Plugin ${candidate.plugin} version ${candidate.version} must be higher than published ${highest.version}.`);
182
+ }
183
+ records.push(candidate);
184
+ }
185
+ return validatePluginReleaseLedger({ schemaVersion: 2, records });
186
+ }
187
+ //# sourceMappingURL=plugin-release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-release.js","sourceRoot":"","sources":["../src/plugin-release.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { PluginLifecycleRuntimeOs, PluginLifecycleScriptEntry, PluginLifecycleScriptRunner, PluginLifecycleScriptSelector } from './types.js';
2
+ export declare const PLUGIN_LIFECYCLE_EVENTS: readonly ["install", "upgrade", "uninstall"];
3
+ export declare const PLUGIN_LIFECYCLE_OS_SELECTORS: readonly ["default", "unix", "windows", "linux", "darwin", "win32"];
4
+ export declare const PLUGIN_SCRIPT_RUNNERS: readonly ["node", "sh", "bash", "pwsh", "powershell", "cmd", "auto"];
5
+ export declare const PLUGIN_AUTO_RUNNER_EXTENSIONS: readonly [".js", ".mjs", ".cjs", ".sh", ".ps1", ".cmd", ".bat"];
6
+ export declare const PLUGIN_SCRIPT_TIMEOUT_DEFAULT_MS = 30000;
7
+ export declare const PLUGIN_SCRIPT_TIMEOUT_MIN_MS = 1000;
8
+ export declare const PLUGIN_SCRIPT_TIMEOUT_MAX_MS = 300000;
9
+ export declare function isPluginLifecycleOsSelector(value: string): boolean;
10
+ export declare function isPluginScriptRunner(value: string): value is PluginLifecycleScriptRunner;
11
+ export declare function getLifecycleSelectorOrder(os: PluginLifecycleRuntimeOs): readonly string[];
12
+ export declare function resolveLifecycleScriptForOs(selector: PluginLifecycleScriptSelector, os: PluginLifecycleRuntimeOs): PluginLifecycleScriptEntry | undefined;
13
+ export declare function inferLifecycleScriptRunnerFromPath(scriptPath: string): Exclude<PluginLifecycleScriptRunner, 'auto'> | undefined;
14
+ export interface ImportSpecifierReference {
15
+ specifier: string;
16
+ kind: 'import' | 'export' | 'require' | 'require-resolve' | 'dynamic-import';
17
+ dynamic?: true;
18
+ }
19
+ export declare function scanJavaScriptImportSpecifiers(source: string): ImportSpecifierReference[];
20
+ export interface NodeImportContractScanOptions {
21
+ files: Record<string, string>;
22
+ filePaths?: readonly string[];
23
+ entryFiles: string[];
24
+ dependencies?: readonly string[];
25
+ devDependencies?: readonly string[];
26
+ allowDevDependencies?: boolean;
27
+ }
28
+ export interface NodeImportContractScanResult {
29
+ files: string[];
30
+ bareSpecifiers: string[];
31
+ errors: string[];
32
+ }
33
+ export declare function scanNodeImportContract(options: NodeImportContractScanOptions): NodeImportContractScanResult;