@agentxm/extension-content 0.49.2 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/content/frontmatter.d.ts +16 -0
- package/dist/src/content/frontmatter.js +6 -4
- package/dist/src/content/skill-content.d.ts +13 -14
- package/dist/src/content/skill-content.js +8 -46
- package/dist/src/content/subagent-content.js +14 -10
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js +3 -3
- package/dist/src/knowledge/index.d.ts +1 -1
- package/dist/src/knowledge/index.js +2 -2
- package/dist/src/knowledge/okf.d.ts +52 -1
- package/dist/src/knowledge/okf.js +86 -59
- package/dist/src/knowledge/package-inspection.d.ts +4 -7
- package/dist/src/knowledge/package-inspection.js +7 -19
- package/dist/src/lint/accessor/platform.d.ts +54 -0
- package/dist/src/lint/accessor/platform.js +89 -0
- package/dist/src/lint/{catalog/pack-accessor → accessor}/vft.d.ts +12 -14
- package/dist/src/lint/accessor/vft.js +83 -0
- package/dist/src/lint/catalog/hook/entrypoint-exists.d.ts +2 -2
- package/dist/src/lint/catalog/hook/entrypoint-exists.js +4 -3
- package/dist/src/lint/catalog/hook/envelope.d.ts +6 -6
- package/dist/src/lint/catalog/hook/envelope.js +5 -4
- package/dist/src/lint/catalog/hook/native-bindings-supported.d.ts +2 -2
- package/dist/src/lint/catalog/hook/native-bindings-supported.js +4 -3
- package/dist/src/lint/catalog/hook.d.ts +2 -2
- package/dist/src/lint/catalog/hook.js +1 -1
- package/dist/src/lint/catalog/knowledge/diagnostics.js +4 -3
- package/dist/src/lint/catalog/knowledge/envelope.d.ts +1 -1
- package/dist/src/lint/catalog/knowledge/envelope.js +4 -3
- package/dist/src/lint/catalog/mcp-server/envelope.d.ts +2 -2
- package/dist/src/lint/catalog/mcp-server/envelope.js +4 -3
- package/dist/src/lint/catalog/mcp-server.d.ts +2 -2
- package/dist/src/lint/catalog/{pack-accessor → pack}/contexts.d.ts +6 -6
- package/dist/src/lint/catalog/{pack-accessor → pack}/contexts.js +4 -4
- package/dist/src/lint/catalog/pack/envelope.d.ts +10 -0
- package/dist/src/lint/catalog/pack/envelope.js +20 -0
- package/dist/src/lint/catalog/pack.d.ts +9 -10
- package/dist/src/lint/catalog/pack.js +12 -15
- package/dist/src/lint/catalog/rule/envelope.d.ts +2 -2
- package/dist/src/lint/catalog/rule/envelope.js +4 -3
- package/dist/src/lint/catalog/rule.d.ts +2 -2
- package/dist/src/lint/catalog/shared/envelope-rules.d.ts +23 -12
- package/dist/src/lint/catalog/shared/envelope-rules.js +22 -13
- package/dist/src/lint/catalog/shared/manifest-present.d.ts +3 -4
- package/dist/src/lint/catalog/shared/recommended-packs-rules.js +5 -3
- package/dist/src/lint/catalog/shared/schema-rule.js +3 -3
- package/dist/src/lint/catalog/{skill-accessor → skill}/contexts.d.ts +5 -5
- package/dist/src/lint/catalog/{skill-accessor → skill}/contexts.js +3 -3
- package/dist/src/lint/catalog/skill/envelope.d.ts +11 -0
- package/dist/src/lint/catalog/skill/envelope.js +23 -0
- package/dist/src/lint/catalog/skill/frontmatter-parseable.d.ts +6 -4
- package/dist/src/lint/catalog/skill/frontmatter-parseable.js +17 -21
- package/dist/src/lint/catalog/skill/frontmatter-standard-valid.js +7 -12
- package/dist/src/lint/catalog/skill.d.ts +4 -5
- package/dist/src/lint/catalog/skill.js +11 -16
- package/dist/src/lint/catalog/subagent/envelope.d.ts +2 -2
- package/dist/src/lint/catalog/subagent/envelope.js +4 -3
- package/dist/src/lint/catalog/subagent.d.ts +2 -2
- package/dist/src/lint/catalog-metadata.js +13 -1
- package/dist/src/lint/context.d.ts +39 -115
- package/dist/src/lint/describe-document.d.ts +1 -1
- package/dist/src/lint/describe-document.js +4 -5
- package/dist/src/lint/index.d.ts +5 -7
- package/dist/src/lint/index.js +5 -7
- package/dist/src/packaging/archive-guardrails.d.ts +11 -0
- package/dist/src/packaging/archive-guardrails.js +111 -74
- package/dist/src/packaging/filtered-package-validation.js +3 -4
- package/dist/src/packaging/manifest-file.d.ts +7 -3
- package/dist/src/packaging/manifest-file.js +10 -11
- package/dist/src/packaging/manifest-policy.d.ts +0 -12
- package/dist/src/packaging/manifest-policy.js +12 -26
- package/dist/src/packaging/test-zip-helpers.js +4 -3
- package/package.json +8 -4
- package/dist/src/lint/catalog/pack/manifest-keys-recognized.d.ts +0 -28
- package/dist/src/lint/catalog/pack/manifest-keys-recognized.js +0 -38
- package/dist/src/lint/catalog/pack/manifest-present.d.ts +0 -17
- package/dist/src/lint/catalog/pack/manifest-present.js +0 -24
- package/dist/src/lint/catalog/pack/manifest-schema-valid.d.ts +0 -25
- package/dist/src/lint/catalog/pack/manifest-schema-valid.js +0 -33
- package/dist/src/lint/catalog/pack-accessor/platform.d.ts +0 -56
- package/dist/src/lint/catalog/pack-accessor/platform.js +0 -93
- package/dist/src/lint/catalog/pack-accessor/vft.js +0 -85
- package/dist/src/lint/catalog/skill/manifest-keys-recognized.d.ts +0 -26
- package/dist/src/lint/catalog/skill/manifest-keys-recognized.js +0 -41
- package/dist/src/lint/catalog/skill/manifest-present.d.ts +0 -23
- package/dist/src/lint/catalog/skill/manifest-present.js +0 -32
- package/dist/src/lint/catalog/skill/manifest-schema-valid.d.ts +0 -21
- package/dist/src/lint/catalog/skill/manifest-schema-valid.js +0 -36
- package/dist/src/lint/catalog/skill/recommended-packs-valid.d.ts +0 -8
- package/dist/src/lint/catalog/skill/recommended-packs-valid.js +0 -12
- package/dist/src/lint/catalog/skill/standalone-declaration-valid.d.ts +0 -8
- package/dist/src/lint/catalog/skill/standalone-declaration-valid.js +0 -12
- package/dist/src/lint/catalog/skill-accessor/platform.d.ts +0 -53
- package/dist/src/lint/catalog/skill-accessor/platform.js +0 -90
- package/dist/src/lint/catalog/skill-accessor/vft.d.ts +0 -77
- package/dist/src/lint/catalog/skill-accessor/vft.js +0 -135
|
@@ -6,6 +6,14 @@ export class ArchiveGuardrailError extends Data.TaggedError("ArchiveGuardrailErr
|
|
|
6
6
|
const ZIP_EOCD_SIGNATURE = 0x06054b50;
|
|
7
7
|
const ZIP_CDIR_SIGNATURE = 0x02014b50;
|
|
8
8
|
export const ZIP_LOCAL_SIGNATURE = 0x04034b50;
|
|
9
|
+
const EOCD_SIZE = 22;
|
|
10
|
+
const CENTRAL_HEADER_SIZE = 46;
|
|
11
|
+
const LOCAL_FILE_HEADER_SIZE = 30;
|
|
12
|
+
const MAX_ARCHIVE_COMMENT_BYTES = 0xffff;
|
|
13
|
+
// ZIP v1 fields saturated to these values defer to a ZIP64 record.
|
|
14
|
+
const ZIP64_COUNT_SENTINEL = 0xffff;
|
|
15
|
+
const ZIP64_SIZE_SENTINEL = 0xffffffff;
|
|
16
|
+
const FLAG_ENCRYPTED = 0x0001;
|
|
9
17
|
const COMPRESSION_STORE = 0;
|
|
10
18
|
const COMPRESSION_DEFLATE = 8;
|
|
11
19
|
const SUPPORTED_COMPRESSION = new Set([COMPRESSION_STORE, COMPRESSION_DEFLATE]);
|
|
@@ -19,60 +27,80 @@ const DEFAULT_LIMITS = {
|
|
|
19
27
|
maxDecompressedBytes: 256 * 1024 * 1024,
|
|
20
28
|
maxCompressionRatio: 100,
|
|
21
29
|
};
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
const malformed = (message, entry) => new ArchiveGuardrailError({
|
|
31
|
+
code: "malformed_archive",
|
|
32
|
+
message,
|
|
33
|
+
...(entry === undefined ? {} : { entry }),
|
|
34
|
+
});
|
|
35
|
+
const bytesEqual = (left, right) => left.length === right.length && left.every((byte, index) => byte === right[index]);
|
|
36
|
+
/**
|
|
37
|
+
* Locate the one end-of-central-directory record whose comment ends exactly at
|
|
38
|
+
* the end of the archive. A second self-consistent record, such as one hidden
|
|
39
|
+
* in the archive comment, makes the archive ambiguous between ZIP readers.
|
|
40
|
+
*/
|
|
41
|
+
const findEocdOffset = (buf, view) => {
|
|
42
|
+
const minOffset = Math.max(0, buf.length - EOCD_SIZE - MAX_ARCHIVE_COMMENT_BYTES);
|
|
43
|
+
let found;
|
|
44
|
+
for (let i = buf.length - EOCD_SIZE; i >= minOffset; i--) {
|
|
45
|
+
if (view.getUint32(i, true) !== ZIP_EOCD_SIGNATURE ||
|
|
46
|
+
i + EOCD_SIZE + view.getUint16(i + 20, true) !== buf.length) {
|
|
47
|
+
continue;
|
|
28
48
|
}
|
|
49
|
+
if (found !== undefined) {
|
|
50
|
+
return Effect.fail(malformed("Archive contains more than one end-of-central-directory record."));
|
|
51
|
+
}
|
|
52
|
+
found = i;
|
|
29
53
|
}
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
54
|
+
return found === undefined
|
|
55
|
+
? Effect.fail(malformed("ZIP end-of-central-directory record not found at the archive end."))
|
|
56
|
+
: Effect.succeed(found);
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Read a single-disk ZIP v1 central directory and verify each entry's local
|
|
60
|
+
* header against it, so every reader of the returned entries sees the same
|
|
61
|
+
* names, methods and data ranges. Multi-disk, ZIP64 and encrypted archives are
|
|
62
|
+
* rejected.
|
|
63
|
+
*/
|
|
35
64
|
export const parseZipCentralDirectory = (buf) => Effect.gen(function* () {
|
|
36
|
-
if (buf.length <
|
|
37
|
-
return yield*
|
|
38
|
-
code: "malformed_archive",
|
|
39
|
-
message: "Archive too small to be a valid ZIP file.",
|
|
40
|
-
});
|
|
65
|
+
if (buf.length < EOCD_SIZE) {
|
|
66
|
+
return yield* malformed("Archive too small to be a valid ZIP file.");
|
|
41
67
|
}
|
|
42
68
|
const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
43
69
|
if (view.getUint32(0, true) !== ZIP_LOCAL_SIGNATURE) {
|
|
44
|
-
return yield*
|
|
45
|
-
code: "malformed_archive",
|
|
46
|
-
message: "Archive does not start with a valid ZIP local file header signature.",
|
|
47
|
-
});
|
|
70
|
+
return yield* malformed("Archive does not start with a valid ZIP local file header signature.");
|
|
48
71
|
}
|
|
49
|
-
const eocdOffset = yield* findEocdOffset(buf);
|
|
72
|
+
const eocdOffset = yield* findEocdOffset(buf, view);
|
|
73
|
+
const diskNumber = view.getUint16(eocdOffset + 4, true);
|
|
74
|
+
const cdirDisk = view.getUint16(eocdOffset + 6, true);
|
|
75
|
+
const entriesOnDisk = view.getUint16(eocdOffset + 8, true);
|
|
50
76
|
const totalEntries = view.getUint16(eocdOffset + 10, true);
|
|
51
77
|
const cdirSize = view.getUint32(eocdOffset + 12, true);
|
|
52
78
|
const cdirOffset = view.getUint32(eocdOffset + 16, true);
|
|
53
|
-
if (
|
|
54
|
-
return yield*
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
79
|
+
if (diskNumber !== 0 || cdirDisk !== 0 || entriesOnDisk !== totalEntries) {
|
|
80
|
+
return yield* malformed("Multi-disk ZIP archives are not supported.");
|
|
81
|
+
}
|
|
82
|
+
if (totalEntries === ZIP64_COUNT_SENTINEL ||
|
|
83
|
+
cdirSize === ZIP64_SIZE_SENTINEL ||
|
|
84
|
+
cdirOffset === ZIP64_SIZE_SENTINEL) {
|
|
85
|
+
return yield* malformed("ZIP64 archives are not supported.");
|
|
86
|
+
}
|
|
87
|
+
if (cdirOffset + cdirSize !== eocdOffset) {
|
|
88
|
+
return yield* malformed("Central directory does not end at the end-of-central-directory record.");
|
|
58
89
|
}
|
|
59
90
|
const entries = [];
|
|
60
91
|
let offset = cdirOffset;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
message: `Central directory entry ${i} exceeds archive bounds.`,
|
|
66
|
-
});
|
|
92
|
+
while (offset < eocdOffset) {
|
|
93
|
+
const index = entries.length;
|
|
94
|
+
if (offset + CENTRAL_HEADER_SIZE > eocdOffset) {
|
|
95
|
+
return yield* malformed(`Central directory entry ${index} exceeds its declared bounds.`);
|
|
67
96
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return yield* new ArchiveGuardrailError({
|
|
71
|
-
code: "malformed_archive",
|
|
72
|
-
message: `Invalid central directory entry signature at offset ${offset}.`,
|
|
73
|
-
});
|
|
97
|
+
if (view.getUint32(offset, true) !== ZIP_CDIR_SIGNATURE) {
|
|
98
|
+
return yield* malformed(`Invalid central directory entry signature at offset ${offset}.`);
|
|
74
99
|
}
|
|
100
|
+
const versionMadeBy = view.getUint16(offset + 4, true);
|
|
101
|
+
const flags = view.getUint16(offset + 8, true);
|
|
75
102
|
const compressionMethod = view.getUint16(offset + 10, true);
|
|
103
|
+
const crc32 = view.getUint32(offset + 16, true);
|
|
76
104
|
const compressedSize = view.getUint32(offset + 20, true);
|
|
77
105
|
const uncompressedSize = view.getUint32(offset + 24, true);
|
|
78
106
|
const fileNameLength = view.getUint16(offset + 28, true);
|
|
@@ -80,58 +108,67 @@ export const parseZipCentralDirectory = (buf) => Effect.gen(function* () {
|
|
|
80
108
|
const fileCommentLength = view.getUint16(offset + 32, true);
|
|
81
109
|
const externalAttributes = view.getUint32(offset + 38, true);
|
|
82
110
|
const localHeaderOffset = view.getUint32(offset + 42, true);
|
|
83
|
-
const fileNameStart = offset +
|
|
111
|
+
const fileNameStart = offset + CENTRAL_HEADER_SIZE;
|
|
84
112
|
const fileNameEnd = fileNameStart + fileNameLength;
|
|
85
|
-
if (fileNameEnd >
|
|
86
|
-
return yield*
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
113
|
+
if (fileNameEnd > eocdOffset) {
|
|
114
|
+
return yield* malformed(`File name for entry ${index} exceeds its declared bounds.`);
|
|
115
|
+
}
|
|
116
|
+
const fileNameBytes = buf.subarray(fileNameStart, fileNameEnd);
|
|
117
|
+
const fileName = textDecoder.decode(fileNameBytes);
|
|
118
|
+
if ((flags & FLAG_ENCRYPTED) !== 0) {
|
|
119
|
+
return yield* malformed(`Encrypted ZIP entries are not supported: "${fileName}".`, fileName);
|
|
120
|
+
}
|
|
121
|
+
if (compressedSize === ZIP64_SIZE_SENTINEL ||
|
|
122
|
+
uncompressedSize === ZIP64_SIZE_SENTINEL ||
|
|
123
|
+
localHeaderOffset === ZIP64_SIZE_SENTINEL) {
|
|
124
|
+
return yield* malformed(`ZIP64 entries are not supported: "${fileName}".`, fileName);
|
|
125
|
+
}
|
|
126
|
+
// Entry data precedes the central directory in a single-disk archive.
|
|
127
|
+
if (localHeaderOffset + LOCAL_FILE_HEADER_SIZE > cdirOffset ||
|
|
128
|
+
view.getUint32(localHeaderOffset, true) !== ZIP_LOCAL_SIGNATURE) {
|
|
129
|
+
return yield* malformed(`Invalid local file header for entry "${fileName}".`, fileName);
|
|
130
|
+
}
|
|
131
|
+
if ((view.getUint16(localHeaderOffset + 6, true) & FLAG_ENCRYPTED) !== 0) {
|
|
132
|
+
return yield* malformed(`Encrypted ZIP entries are not supported: "${fileName}".`, fileName);
|
|
133
|
+
}
|
|
134
|
+
if (view.getUint16(localHeaderOffset + 8, true) !== compressionMethod) {
|
|
135
|
+
return yield* malformed(`Local and central compression methods disagree for entry "${fileName}".`, fileName);
|
|
136
|
+
}
|
|
137
|
+
const localNameStart = localHeaderOffset + LOCAL_FILE_HEADER_SIZE;
|
|
138
|
+
const localNameEnd = localNameStart + view.getUint16(localHeaderOffset + 26, true);
|
|
139
|
+
const localDataOffset = localNameEnd + view.getUint16(localHeaderOffset + 28, true);
|
|
140
|
+
if (localNameEnd > cdirOffset ||
|
|
141
|
+
!bytesEqual(buf.subarray(localNameStart, localNameEnd), fileNameBytes)) {
|
|
142
|
+
return yield* malformed(`Local and central file names disagree for entry "${fileName}".`, fileName);
|
|
143
|
+
}
|
|
144
|
+
if (localDataOffset + compressedSize > cdirOffset) {
|
|
145
|
+
return yield* malformed(`Compressed data for entry "${fileName}" exceeds archive bounds.`, fileName);
|
|
90
146
|
}
|
|
91
|
-
const fileName = textDecoder.decode(buf.slice(fileNameStart, fileNameEnd));
|
|
92
147
|
entries.push({
|
|
93
148
|
fileName,
|
|
149
|
+
versionMadeBy,
|
|
150
|
+
crc32,
|
|
94
151
|
compressedSize,
|
|
95
152
|
uncompressedSize,
|
|
96
153
|
compressionMethod,
|
|
97
154
|
externalAttributes,
|
|
98
155
|
localHeaderOffset,
|
|
156
|
+
localDataOffset,
|
|
99
157
|
});
|
|
100
158
|
offset = fileNameEnd + extraFieldLength + fileCommentLength;
|
|
101
159
|
}
|
|
160
|
+
if (offset !== eocdOffset || entries.length !== totalEntries) {
|
|
161
|
+
return yield* malformed(`Central directory holds ${entries.length} entries, but the archive declares ${totalEntries}.`);
|
|
162
|
+
}
|
|
102
163
|
return entries;
|
|
103
164
|
});
|
|
104
|
-
const LOCAL_FILE_HEADER_SIZE = 30;
|
|
105
165
|
const INFLATE_CHUNK_SIZE = 16 * 1024;
|
|
106
166
|
export const defaultReadEntry = (archiveBytes, entry) => Effect.gen(function* () {
|
|
107
|
-
const {
|
|
108
|
-
if (
|
|
109
|
-
return yield*
|
|
110
|
-
code: "malformed_archive",
|
|
111
|
-
message: `Local file header for entry "${fileName}" exceeds archive bounds.`,
|
|
112
|
-
entry: fileName,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
const view = new DataView(archiveBytes.buffer, archiveBytes.byteOffset, archiveBytes.byteLength);
|
|
116
|
-
const signature = view.getUint32(localHeaderOffset, true);
|
|
117
|
-
if (signature !== ZIP_LOCAL_SIGNATURE) {
|
|
118
|
-
return yield* new ArchiveGuardrailError({
|
|
119
|
-
code: "malformed_archive",
|
|
120
|
-
message: `Invalid local file header signature for entry "${fileName}".`,
|
|
121
|
-
entry: fileName,
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
const fileNameLength = view.getUint16(localHeaderOffset + 26, true);
|
|
125
|
-
const extraFieldLength = view.getUint16(localHeaderOffset + 28, true);
|
|
126
|
-
const dataStart = localHeaderOffset + LOCAL_FILE_HEADER_SIZE + fileNameLength + extraFieldLength;
|
|
127
|
-
if (dataStart + compressedSize > archiveBytes.length) {
|
|
128
|
-
return yield* new ArchiveGuardrailError({
|
|
129
|
-
code: "malformed_archive",
|
|
130
|
-
message: `Compressed data for entry "${fileName}" exceeds archive bounds.`,
|
|
131
|
-
entry: fileName,
|
|
132
|
-
});
|
|
167
|
+
const { localDataOffset, compressedSize, compressionMethod, fileName } = entry;
|
|
168
|
+
if (localDataOffset + compressedSize > archiveBytes.length) {
|
|
169
|
+
return yield* malformed(`Compressed data for entry "${fileName}" exceeds archive bounds.`, fileName);
|
|
133
170
|
}
|
|
134
|
-
const compressedData = archiveBytes.slice(
|
|
171
|
+
const compressedData = archiveBytes.slice(localDataOffset, localDataOffset + compressedSize);
|
|
135
172
|
if (compressionMethod === 0) {
|
|
136
173
|
if (compressedData.byteLength !== entry.uncompressedSize) {
|
|
137
174
|
return yield* new ArchiveGuardrailError({
|
|
@@ -441,4 +478,4 @@ export const validateArchive = (archiveBytes, limits) => Effect.gen(function* ()
|
|
|
441
478
|
yield* checkSymlinks(archiveBytes, entries);
|
|
442
479
|
return entries;
|
|
443
480
|
});
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZS1ndWFyZHJhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2luZy9hcmNoaXZlLWd1YXJkcmFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUV4QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FjakY7Q0FBRztBQUVMLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztBQUU5QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5QixNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBRWhGLHVGQUF1RjtBQUN2RixNQUFNLHFCQUFxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUV0QixNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBaUJ0QyxNQUFNLGNBQWMsR0FBcUM7SUFDdkQsVUFBVSxFQUFFLE1BQU07SUFDbEIsb0JBQW9CLEVBQUUsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJO0lBQ3ZDLG1CQUFtQixFQUFFLEdBQUc7Q0FDekIsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBZSxFQUFnRCxFQUFFLENBQ3ZGLE1B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
|
|
481
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZS1ndWFyZHJhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2luZy9hcmNoaXZlLWd1YXJkcmFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUV4QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FjakY7Q0FBRztBQUVMLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztBQUU5QyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDckIsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFDL0IsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDbEMsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUM7QUFDekMsbUVBQW1FO0FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0FBQ3BDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDO0FBQ3ZDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUU5QixNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5QixNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBRWhGLHVGQUF1RjtBQUN2RixNQUFNLHFCQUFxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDO0FB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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Data from "effect/Data";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import * as Schema from "effect/Schema";
|
|
4
|
+
import * as Predicate from "effect/Predicate";
|
|
4
5
|
import { HookManifestSchema, requiredHookRuntimeFiles, } from "@agentxm/extension-model/unstable/hooks/manifest-schema";
|
|
5
6
|
import { parseFrontmatterEffect } from "../content/frontmatter.js";
|
|
6
7
|
import { inspectKnowledgeEntries } from "../knowledge/okf.js";
|
|
@@ -8,9 +9,7 @@ import { readSubagentPackage } from "../content/subagent-content.js";
|
|
|
8
9
|
/** A type-specific package invariant failed against the filtered archive. */
|
|
9
10
|
export class FilteredPackageError extends Data.TaggedError("FilteredPackageError") {
|
|
10
11
|
}
|
|
11
|
-
const rawField = (raw, field) =>
|
|
12
|
-
? Reflect.get(raw, field)
|
|
13
|
-
: undefined;
|
|
12
|
+
const rawField = (raw, field) => Predicate.isObject(raw) ? Reflect.get(raw, field) : undefined;
|
|
14
13
|
const requireEntry = (entries, path) => {
|
|
15
14
|
const found = entries.find((entry) => entry.fileName === path);
|
|
16
15
|
return found === undefined
|
|
@@ -107,4 +106,4 @@ export const validateFilteredPackage = (args) => Effect.gen(function* () {
|
|
|
107
106
|
return;
|
|
108
107
|
}
|
|
109
108
|
});
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyZWQtcGFja2FnZS12YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2luZy9maWx0ZXJlZC1wYWNrYWdlLXZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHdCQUF3QixHQUN6QixNQUFNLHlEQUF5RCxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE9BQU8sRUFBRSx1QkFBdUIsRUFBNkIsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUlyRSw2RUFBNkU7QUFDN0UsTUFBTSxPQUFPLG9CQUFxQixTQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBSS9FO0NBQUc7QUFXTCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVksRUFBRSxLQUFhLEVBQVcsRUFBRSxDQUN4RCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBRWhFLE1BQU0sWUFBWSxHQUFHLENBQ25CLE9BQWdDLEVBQ2hDLElBQVksRUFDbUMsRUFBRTtJQUNqRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFD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
|
|
@@ -8,13 +8,17 @@ import { ManifestError, type ExtensionManifest, type ManifestIdentity } from "./
|
|
|
8
8
|
interface ReadManifestOptions {
|
|
9
9
|
readonly defaultOwner?: Handle;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
/** The manifest a package of `T` declares. */
|
|
12
|
+
type ManifestOfType<T extends ExtensionType> = Extract<ExtensionManifest, {
|
|
13
|
+
readonly type: T;
|
|
14
|
+
}>;
|
|
15
|
+
interface ReadManifestResult<T extends ExtensionType> {
|
|
12
16
|
readonly path: string;
|
|
13
17
|
readonly fileName: string;
|
|
14
18
|
readonly raw: unknown;
|
|
15
|
-
readonly manifest:
|
|
19
|
+
readonly manifest: ManifestOfType<T>;
|
|
16
20
|
readonly identity: ManifestIdentity;
|
|
17
21
|
}
|
|
18
|
-
export declare const readExtensionManifest: (directory: string, type:
|
|
22
|
+
export declare const readExtensionManifest: <T extends ExtensionType>(directory: string, type: T, options?: ReadManifestOptions) => Effect.Effect<ReadManifestResult<T>, ManifestError, FileSystem.FileSystem | Path.Path>;
|
|
19
23
|
export {};
|
|
20
24
|
//# sourceMappingURL=manifest-file.d.ts.map
|
|
@@ -4,12 +4,11 @@ import * as FileSystem from "effect/FileSystem";
|
|
|
4
4
|
import * as Path from "effect/Path";
|
|
5
5
|
import * as Schema from "effect/Schema";
|
|
6
6
|
import * as SchemaIssue from "effect/SchemaIssue";
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
!Object.hasOwn(raw, "owner")
|
|
7
|
+
import * as Predicate from "effect/Predicate";
|
|
8
|
+
import { ManifestError, ManifestIdentitySchema, manifestSchemaForType, } from "./manifest-policy.js";
|
|
9
|
+
import { manifestFilenameForType } from "@agentxm/extension-model/unstable/extensions/common";
|
|
10
|
+
const isManifestOfType = (manifest, type) => manifest.type === type;
|
|
11
|
+
const withDefaultOwner = (raw, defaultOwner) => defaultOwner !== undefined && Predicate.isObject(raw) && !Object.hasOwn(raw, "owner")
|
|
13
12
|
? { ...raw, owner: defaultOwner }
|
|
14
13
|
: raw;
|
|
15
14
|
export const readExtensionManifest = (directory, type, options) => Effect.gen(function* () {
|
|
@@ -39,22 +38,22 @@ export const readExtensionManifest = (directory, type, options) => Effect.gen(fu
|
|
|
39
38
|
cause,
|
|
40
39
|
})));
|
|
41
40
|
const raw = withDefaultOwner(parsed, options?.defaultOwner);
|
|
42
|
-
const
|
|
41
|
+
const decoded = yield* Schema.decodeUnknownEffect(manifestSchemaForType(type))(raw, type === "hook" ? { onExcessProperty: "error" } : undefined).pipe(Effect.mapError((cause) => new ManifestError({
|
|
43
42
|
code: "manifest_schema_invalid",
|
|
44
43
|
detail: `Manifest file "${fileName}" does not conform to the ${type} manifest schema.`,
|
|
45
44
|
details: SchemaIssue.makeFormatterDefault()(cause.issue),
|
|
46
45
|
})));
|
|
47
|
-
const identity = yield* Schema.decodeUnknownEffect(ManifestIdentitySchema)(
|
|
46
|
+
const identity = yield* Schema.decodeUnknownEffect(ManifestIdentitySchema)(decoded).pipe(Effect.mapError((cause) => new ManifestError({
|
|
48
47
|
code: "manifest_schema_invalid",
|
|
49
48
|
detail: `Manifest file "${fileName}" is missing required identity fields.`,
|
|
50
49
|
details: SchemaIssue.makeFormatterDefault()(cause.issue),
|
|
51
50
|
})));
|
|
52
|
-
if (
|
|
51
|
+
if (!isManifestOfType(decoded, type)) {
|
|
53
52
|
return yield* new ManifestError({
|
|
54
53
|
code: "manifest_schema_invalid",
|
|
55
54
|
detail: `Manifest declared type "${identity.type}" disagrees with ${fileName}.`,
|
|
56
55
|
});
|
|
57
56
|
}
|
|
58
|
-
return { path: manifestPath, fileName, raw, manifest, identity };
|
|
57
|
+
return { path: manifestPath, fileName, raw, manifest: decoded, identity };
|
|
59
58
|
});
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdpbmcvbWFuaWZlc3QtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzRUFBc0U7QUFFdEUsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssV0FBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFJOUMsT0FBTyxFQUNMLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIscUJBQXFCLEdBR3RCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFpQjlGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDdkIsUUFBMkIsRUFDM0IsSUFBTyxFQUN3QixFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7QUFFM0QsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQVksRUFBRSxZQUFnQyxFQUFXLEVBQUUsQ0FDbkYsWUFBWSxLQUFLLFNBQVMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO0lBQ25GLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7SUFDakMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUVWLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLFNBQWlCLEVBQ2pCLElBQU8sRUFDUCxPQUE2QixFQUMyRCxFQUFFLENBQzFGLE1B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
|
|
@@ -15,18 +15,6 @@ export declare class ManifestError extends ManifestError_base<{
|
|
|
15
15
|
readonly cause?: unknown;
|
|
16
16
|
}> {
|
|
17
17
|
}
|
|
18
|
-
export declare const MANIFEST_FILENAME_BY_TYPE: {
|
|
19
|
-
readonly skill: "skill.json";
|
|
20
|
-
readonly "mcp-server": "mcp.json";
|
|
21
|
-
readonly subagent: "subagent.json";
|
|
22
|
-
readonly pack: "pack.json";
|
|
23
|
-
readonly rule: "rule.json";
|
|
24
|
-
readonly hook: "hook.json";
|
|
25
|
-
readonly knowledge: "knowledge.json";
|
|
26
|
-
};
|
|
27
|
-
export declare const MANIFEST_FILENAMES: ReadonlySet<string>;
|
|
28
|
-
export declare const extensionTypeForManifestFilename: (fileName: string) => ExtensionType | undefined;
|
|
29
|
-
export declare const manifestFilenameForType: (type: ExtensionType) => string;
|
|
30
18
|
export declare const ManifestIdentitySchema: Schema.Struct<{
|
|
31
19
|
readonly owner: Schema.brand<Schema.String, "Handle">;
|
|
32
20
|
readonly type: Schema.Literals<readonly ("subagent" | "skill" | "mcp-server" | "rule" | "hook" | "knowledge" | "pack")[]>;
|