@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.
Files changed (95) hide show
  1. package/dist/src/content/frontmatter.d.ts +16 -0
  2. package/dist/src/content/frontmatter.js +6 -4
  3. package/dist/src/content/skill-content.d.ts +13 -14
  4. package/dist/src/content/skill-content.js +8 -46
  5. package/dist/src/content/subagent-content.js +14 -10
  6. package/dist/src/index.d.ts +2 -2
  7. package/dist/src/index.js +3 -3
  8. package/dist/src/knowledge/index.d.ts +1 -1
  9. package/dist/src/knowledge/index.js +2 -2
  10. package/dist/src/knowledge/okf.d.ts +52 -1
  11. package/dist/src/knowledge/okf.js +86 -59
  12. package/dist/src/knowledge/package-inspection.d.ts +4 -7
  13. package/dist/src/knowledge/package-inspection.js +7 -19
  14. package/dist/src/lint/accessor/platform.d.ts +54 -0
  15. package/dist/src/lint/accessor/platform.js +89 -0
  16. package/dist/src/lint/{catalog/pack-accessor → accessor}/vft.d.ts +12 -14
  17. package/dist/src/lint/accessor/vft.js +83 -0
  18. package/dist/src/lint/catalog/hook/entrypoint-exists.d.ts +2 -2
  19. package/dist/src/lint/catalog/hook/entrypoint-exists.js +4 -3
  20. package/dist/src/lint/catalog/hook/envelope.d.ts +6 -6
  21. package/dist/src/lint/catalog/hook/envelope.js +5 -4
  22. package/dist/src/lint/catalog/hook/native-bindings-supported.d.ts +2 -2
  23. package/dist/src/lint/catalog/hook/native-bindings-supported.js +4 -3
  24. package/dist/src/lint/catalog/hook.d.ts +2 -2
  25. package/dist/src/lint/catalog/hook.js +1 -1
  26. package/dist/src/lint/catalog/knowledge/diagnostics.js +4 -3
  27. package/dist/src/lint/catalog/knowledge/envelope.d.ts +1 -1
  28. package/dist/src/lint/catalog/knowledge/envelope.js +4 -3
  29. package/dist/src/lint/catalog/mcp-server/envelope.d.ts +2 -2
  30. package/dist/src/lint/catalog/mcp-server/envelope.js +4 -3
  31. package/dist/src/lint/catalog/mcp-server.d.ts +2 -2
  32. package/dist/src/lint/catalog/{pack-accessor → pack}/contexts.d.ts +6 -6
  33. package/dist/src/lint/catalog/{pack-accessor → pack}/contexts.js +4 -4
  34. package/dist/src/lint/catalog/pack/envelope.d.ts +10 -0
  35. package/dist/src/lint/catalog/pack/envelope.js +20 -0
  36. package/dist/src/lint/catalog/pack.d.ts +9 -10
  37. package/dist/src/lint/catalog/pack.js +12 -15
  38. package/dist/src/lint/catalog/rule/envelope.d.ts +2 -2
  39. package/dist/src/lint/catalog/rule/envelope.js +4 -3
  40. package/dist/src/lint/catalog/rule.d.ts +2 -2
  41. package/dist/src/lint/catalog/shared/envelope-rules.d.ts +23 -12
  42. package/dist/src/lint/catalog/shared/envelope-rules.js +22 -13
  43. package/dist/src/lint/catalog/shared/manifest-present.d.ts +3 -4
  44. package/dist/src/lint/catalog/shared/recommended-packs-rules.js +5 -3
  45. package/dist/src/lint/catalog/shared/schema-rule.js +3 -3
  46. package/dist/src/lint/catalog/{skill-accessor → skill}/contexts.d.ts +5 -5
  47. package/dist/src/lint/catalog/{skill-accessor → skill}/contexts.js +3 -3
  48. package/dist/src/lint/catalog/skill/envelope.d.ts +11 -0
  49. package/dist/src/lint/catalog/skill/envelope.js +23 -0
  50. package/dist/src/lint/catalog/skill/frontmatter-parseable.d.ts +6 -4
  51. package/dist/src/lint/catalog/skill/frontmatter-parseable.js +17 -21
  52. package/dist/src/lint/catalog/skill/frontmatter-standard-valid.js +7 -12
  53. package/dist/src/lint/catalog/skill.d.ts +4 -5
  54. package/dist/src/lint/catalog/skill.js +11 -16
  55. package/dist/src/lint/catalog/subagent/envelope.d.ts +2 -2
  56. package/dist/src/lint/catalog/subagent/envelope.js +4 -3
  57. package/dist/src/lint/catalog/subagent.d.ts +2 -2
  58. package/dist/src/lint/catalog-metadata.js +13 -1
  59. package/dist/src/lint/context.d.ts +39 -115
  60. package/dist/src/lint/describe-document.d.ts +1 -1
  61. package/dist/src/lint/describe-document.js +4 -5
  62. package/dist/src/lint/index.d.ts +5 -7
  63. package/dist/src/lint/index.js +5 -7
  64. package/dist/src/packaging/archive-guardrails.d.ts +11 -0
  65. package/dist/src/packaging/archive-guardrails.js +111 -74
  66. package/dist/src/packaging/filtered-package-validation.js +3 -4
  67. package/dist/src/packaging/manifest-file.d.ts +7 -3
  68. package/dist/src/packaging/manifest-file.js +10 -11
  69. package/dist/src/packaging/manifest-policy.d.ts +0 -12
  70. package/dist/src/packaging/manifest-policy.js +12 -26
  71. package/dist/src/packaging/test-zip-helpers.js +4 -3
  72. package/package.json +8 -4
  73. package/dist/src/lint/catalog/pack/manifest-keys-recognized.d.ts +0 -28
  74. package/dist/src/lint/catalog/pack/manifest-keys-recognized.js +0 -38
  75. package/dist/src/lint/catalog/pack/manifest-present.d.ts +0 -17
  76. package/dist/src/lint/catalog/pack/manifest-present.js +0 -24
  77. package/dist/src/lint/catalog/pack/manifest-schema-valid.d.ts +0 -25
  78. package/dist/src/lint/catalog/pack/manifest-schema-valid.js +0 -33
  79. package/dist/src/lint/catalog/pack-accessor/platform.d.ts +0 -56
  80. package/dist/src/lint/catalog/pack-accessor/platform.js +0 -93
  81. package/dist/src/lint/catalog/pack-accessor/vft.js +0 -85
  82. package/dist/src/lint/catalog/skill/manifest-keys-recognized.d.ts +0 -26
  83. package/dist/src/lint/catalog/skill/manifest-keys-recognized.js +0 -41
  84. package/dist/src/lint/catalog/skill/manifest-present.d.ts +0 -23
  85. package/dist/src/lint/catalog/skill/manifest-present.js +0 -32
  86. package/dist/src/lint/catalog/skill/manifest-schema-valid.d.ts +0 -21
  87. package/dist/src/lint/catalog/skill/manifest-schema-valid.js +0 -36
  88. package/dist/src/lint/catalog/skill/recommended-packs-valid.d.ts +0 -8
  89. package/dist/src/lint/catalog/skill/recommended-packs-valid.js +0 -12
  90. package/dist/src/lint/catalog/skill/standalone-declaration-valid.d.ts +0 -8
  91. package/dist/src/lint/catalog/skill/standalone-declaration-valid.js +0 -12
  92. package/dist/src/lint/catalog/skill-accessor/platform.d.ts +0 -53
  93. package/dist/src/lint/catalog/skill-accessor/platform.js +0 -90
  94. package/dist/src/lint/catalog/skill-accessor/vft.d.ts +0 -77
  95. package/dist/src/lint/catalog/skill-accessor/vft.js +0 -135
@@ -5,13 +5,15 @@
5
5
  * Cascade (reports the first failure in the order below; later arms
6
6
  * short-circuit):
7
7
  *
8
- * 1. SKILL.md begins with `---` at byte 0 (no BOM, no leading whitespace, no
9
- * leading HTML comment). This is the arm that caught the
8
+ * 1. SKILL.md begins with a `---` line at byte 0 (no BOM, no leading
9
+ * whitespace, no leading HTML comment). This is the arm that caught the
10
10
  * `@agentxm/skills/axm` regression — an HTML comment preceded the
11
11
  * frontmatter delimiter, so YAML parsers silently treated the content as
12
12
  * body.
13
- * 2. Frontmatter YAML parses without error.
14
- * 3. Parsed frontmatter is a mapping (not a list, not a scalar).
13
+ * 2. A closing `---` line ends the block. Delimiters are located by
14
+ * `findFrontmatterBoundaries`, the same grammar `parseSkillMd` uses.
15
+ * 3. Frontmatter YAML parses without error.
16
+ * 4. Parsed frontmatter is a mapping (not a list, not a scalar).
15
17
  *
16
18
  * Presence is handled by `skill/skill-md-present`; this rule early-returns
17
19
  * `[]` when `SKILL.md` is absent.
@@ -5,13 +5,15 @@
5
5
  * Cascade (reports the first failure in the order below; later arms
6
6
  * short-circuit):
7
7
  *
8
- * 1. SKILL.md begins with `---` at byte 0 (no BOM, no leading whitespace, no
9
- * leading HTML comment). This is the arm that caught the
8
+ * 1. SKILL.md begins with a `---` line at byte 0 (no BOM, no leading
9
+ * whitespace, no leading HTML comment). This is the arm that caught the
10
10
  * `@agentxm/skills/axm` regression — an HTML comment preceded the
11
11
  * frontmatter delimiter, so YAML parsers silently treated the content as
12
12
  * body.
13
- * 2. Frontmatter YAML parses without error.
14
- * 3. Parsed frontmatter is a mapping (not a list, not a scalar).
13
+ * 2. A closing `---` line ends the block. Delimiters are located by
14
+ * `findFrontmatterBoundaries`, the same grammar `parseSkillMd` uses.
15
+ * 3. Frontmatter YAML parses without error.
16
+ * 4. Parsed frontmatter is a mapping (not a list, not a scalar).
15
17
  *
16
18
  * Presence is handled by `skill/skill-md-present`; this rule early-returns
17
19
  * `[]` when `SKILL.md` is absent.
@@ -26,7 +28,9 @@
26
28
  * @packageDocumentation
27
29
  */
28
30
  import * as Effect from "effect/Effect";
31
+ import * as Predicate from "effect/Predicate";
29
32
  import YAML from "yaml";
33
+ import { findFrontmatterBoundaries } from "../../../content/frontmatter.js";
30
34
  const RULE_ID = "skill/frontmatter-parseable";
31
35
  const SKILL_MD = "SKILL.md";
32
36
  const DELIMITER = "---";
@@ -70,9 +74,7 @@ const evaluateCascade = (content) => {
70
74
  }
71
75
  const parsed = parseFrontmatterYaml(content);
72
76
  if (parsed === undefined) {
73
- // No frontmatter block. Treat as bad (cascade arm 1 "begins with ---"
74
- // already handled the "literally no ---" case; reaching here means the
75
- // delimiter was found but the closing delimiter is missing).
77
+ // Arm 1 guaranteed the opening `---` line, so the closing one is missing.
76
78
  return [
77
79
  finding("SKILL.md frontmatter is malformed because the closing `---` delimiter is missing. Add a closing `---` after the frontmatter block."),
78
80
  ];
@@ -82,7 +84,7 @@ const evaluateCascade = (content) => {
82
84
  finding(`SKILL.md frontmatter YAML is invalid. Detail: ${parsed.message}. Fix the YAML syntax in the frontmatter block.`),
83
85
  ];
84
86
  }
85
- if (!isMapping(parsed.value)) {
87
+ if (!Predicate.isReadonlyObject(parsed.value)) {
86
88
  return [
87
89
  finding("SKILL.md frontmatter must be a YAML mapping, not a list or scalar. Rewrite the frontmatter block in `SKILL.md` as `key: value` pairs."),
88
90
  ];
@@ -97,7 +99,9 @@ const detectLeadingBytes = (content) => {
97
99
  return finding("SKILL.md starts with a UTF-8 BOM before the frontmatter delimiter. Remove the BOM so the file starts with `---`.", { line: 1 });
98
100
  }
99
101
  if (content.startsWith(DELIMITER)) {
100
- return undefined;
102
+ return content.split(/\r?\n/u, 1)[0] === DELIMITER
103
+ ? undefined
104
+ : finding("SKILL.md frontmatter must open with a line containing only `---`. Move any text after the opening delimiter onto the next line.", { line: 1 });
101
105
  }
102
106
  // Any non-`---` leading content is a cascade-arm-1 violation. Detect the
103
107
  // common HTML-comment case explicitly so the finding message is clear.
@@ -107,21 +111,14 @@ const detectLeadingBytes = (content) => {
107
111
  return finding("SKILL.md must start with the frontmatter delimiter `---`. Remove any leading content so the file starts with `---`.", { line: 1 });
108
112
  };
109
113
  const parseFrontmatterYaml = (content) => {
110
- // content starts with `---` (arm 1 guaranteed). Find closing delimiter on a
111
- // new line.
112
- const afterOpening = content.indexOf("\n");
113
- if (afterOpening === -1) {
114
- return undefined;
115
- }
116
- const closingIndex = content.indexOf(`\n${DELIMITER}`, afterOpening);
117
- if (closingIndex === -1) {
114
+ const boundaries = findFrontmatterBoundaries(content);
115
+ if (boundaries === undefined) {
118
116
  return undefined;
119
117
  }
120
- const yamlContent = content.slice(afterOpening + 1, closingIndex);
121
118
  try {
122
119
  // YAML.parse returns `null | undefined` for empty input; we care about
123
120
  // shape, not emptiness at this arm.
124
- const value = YAML.parse(yamlContent);
121
+ const value = YAML.parse(content.slice(boundaries.yamlStart, boundaries.yamlEnd));
125
122
  return { kind: "parsed", value };
126
123
  }
127
124
  catch (error) {
@@ -131,7 +128,6 @@ const parseFrontmatterYaml = (content) => {
131
128
  };
132
129
  }
133
130
  };
134
- const isMapping = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
135
131
  // -----------------------------------------------------------------------------
136
132
  // Finding helpers
137
133
  // -----------------------------------------------------------------------------
@@ -146,4 +142,4 @@ const finding = (message, position) => ({
146
142
  ...(position?.column !== undefined ? { column: position.column } : {}),
147
143
  },
148
144
  });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRtYXR0ZXItcGFyc2VhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnQvY2F0YWxvZy9za2lsbC9mcm9udG1hdHRlci1wYXJzZWFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBRUgsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBSXhCLE1BQU0sT0FBTyxHQUFHLDZCQUE2QixDQUFDO0FBQzlDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUM1QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDeEIseUVBQXlFO0FBQ3pFLDhDQUE4QztBQUM5QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFFMUIsNEVBQTRFO0FBQzVFLCtEQUErRDtBQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFtQztJQUN0RSxFQUFFLEVBQUUsT0FBTztJQUNYLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsV0FBVyxFQUFFLCtDQUErQztJQUM1RCxJQUFJLEVBQUUsVUFBVTtJQUNoQixRQUFRLEVBQUUsT0FBTztJQUNqQixLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNqQixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixtREFBbUQ7WUFDbkQsT0FBTyxFQUFFLENB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
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRtYXR0ZXItcGFyc2VhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnQvY2F0YWxvZy9za2lsbC9mcm9udG1hdHRlci1wYXJzZWFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFFSCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssU0FBUyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUk1RSxNQUFNLE9BQU8sR0FBRyw2QkFBNkIsQ0FBQztBQUM5QyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLHlFQUF5RTtBQUN6RSw4Q0FBOEM7QUFDOUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBRTFCLDRFQUE0RTtBQUM1RSwrREFBK0Q7QUFDL0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBbUM7SUFDdEUsRUFBRSxFQUFFLE9BQU87SUFDWCxnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLFdBQVcsRUFBRSwrQ0FBK0M7SUFDNUQsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLE9BQU87SUFDakIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDbEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxN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
@@ -8,25 +8,20 @@
8
8
  * @experimental This API is unstable and may change without notice.
9
9
  */
10
10
  import * as Effect from "effect/Effect";
11
+ import * as Predicate from "effect/Predicate";
11
12
  import YAML from "yaml";
13
+ import { findFrontmatterBoundaries } from "../../../content/frontmatter.js";
12
14
  import { validateSkillFrontmatter } from "../../../content/skill-content.js";
13
15
  const RULE_ID = "skill/frontmatter-standard-valid";
14
16
  const SKILL_MD = "SKILL.md";
15
17
  const decoder = new TextDecoder("utf-8", { fatal: false, ignoreBOM: true });
16
18
  const parseFrontmatterMapping = (content) => {
17
- if (!content.startsWith("---"))
18
- return undefined;
19
- const openingEnd = content.indexOf("\n");
20
- if (openingEnd === -1)
21
- return undefined;
22
- const closingStart = content.indexOf("\n---", openingEnd);
23
- if (closingStart === -1)
19
+ const boundaries = findFrontmatterBoundaries(content);
20
+ if (boundaries === undefined)
24
21
  return undefined;
25
22
  try {
26
- const parsed = YAML.parse(content.slice(openingEnd + 1, closingStart));
27
- return parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)
28
- ? parsed
29
- : undefined;
23
+ const parsed = YAML.parse(content.slice(boundaries.yamlStart, boundaries.yamlEnd));
24
+ return Predicate.isObject(parsed) ? parsed : undefined;
30
25
  }
31
26
  catch {
32
27
  return undefined;
@@ -59,4 +54,4 @@ export const frontmatterStandardValidRule = {
59
54
  return validation.valid ? [] : validation.errors.map(finding);
60
55
  }),
61
56
  };
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRtYXR0ZXItc3RhbmRhcmQtdmFsaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGludC9jYXRhbG9nL3NraWxsL2Zyb250bWF0dGVyLXN0YW5kYXJkLXZhbGlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSTdFLE1BQU0sT0FBTyxHQUFHLGtDQUFrQyxDQUFDO0FBQ25ELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxPQUFlLEVBQXVCLEVBQUU7SUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDakQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUN4QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxRCxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMxQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sTUFBTSxLQUFLLElBQUksSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM1RSxDQUFDLENBQUMsTUFBTTtZQUNSLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8sR0FBRyxDQUFDLE9BQWUsRUFBbUIsRUFBRSxDQUFDLENBQUM7SUFDckQsSUFBSSxFQUFFLFVBQVU7SUFDaEIsTUFBTSxFQUFFLE9BQU87SUFDZixRQUFRLEVBQUUsT0FBTztJQUNqQixPQUFPO0lBQ1AsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0NBQ3RDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFtQztJQUMxRSxFQUFFLEVBQUUsT0FBTztJQUNYLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsV0FBVyxFQUFFLGlFQUFpRTtJQUM5RSxJQUFJLEVBQUUsVUFBVTtJQUNoQixRQUFRLEVBQUUsT0FBTztJQUNqQixLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNqQixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUNsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDM0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM1QyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDOUMsQ0FBQztRQUNGLElBQUksT0FBTyxLQUFLLFNBQVM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxJQUFJLE1BQU0sS0FBSyxTQUFTO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEMsTUFBTSxVQUFVLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEYsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQztDQUNMLENBQUMifQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRtYXR0ZXItc3RhbmRhcmQtdmFsaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGludC9jYXRhbG9nL3NraWxsL2Zyb250bWF0dGVyLXN0YW5kYXJkLXZhbGlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJN0UsTUFBTSxPQUFPLEdBQUcsa0NBQWtDLENBQUM7QUFDbkQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFFNUUsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQWUsRUFBdUIsRUFBRTtJQUN2RSxNQUFNLFVBQVUsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxJQUFJLFVBQVUsS0FBSyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDL0MsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDNUYsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN6RCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBZSxFQUFtQixFQUFFLENBQUMsQ0FBQztJQUNyRCxJQUFJLEVBQUUsVUFBVTtJQUNoQixNQUFNLEVBQUUsT0FBTztJQUNmLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLE9BQU87SUFDUCxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Q0FDdEMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQW1DO0lBQzFFLEVBQUUsRUFBRSxPQUFPO0lBQ1gsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixXQUFXLEVBQUUsaUVBQWlFO0lBQzlFLElBQUksRUFBRSxVQUFVO0lBQ2hCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUMzRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzVDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUM5QyxDQUFDO1FBQ0YsSUFBSSxPQUFPLEtBQUssU0FBUztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksTUFBTSxLQUFLLFNBQVM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0NBQ0wsQ0FBQyJ9
@@ -15,12 +15,11 @@
15
15
  * | `skill/standalone-declaration-valid` | warning | — |
16
16
  * | `skill/recommended-packs-valid` | warning | — |
17
17
  *
18
- * The last two come from `catalog/shared/recommended-packs-rules.ts`; every
19
- * non-pack catalog applies the same pair against its own manifest.
18
+ * The `skill.json` rules are the shared manifest envelope (`./skill/envelope.ts`),
19
+ * interleaved with the skill content rules. They apply to native skills only;
20
+ * a non-native skill carries no manifest, so they produce no findings for it.
20
21
  *
21
- * All ship `kind: "advisory"`. Native-vs-non-native applicability is
22
- * expressed via `check` early-return (no separate `applies` predicate); see
23
- * each rule's module for the guard.
22
+ * All ship `kind: "advisory"`.
24
23
  *
25
24
  * @experimental This API is unstable and may change without notice.
26
25
  * @packageDocumentation
@@ -15,24 +15,19 @@
15
15
  * | `skill/standalone-declaration-valid` | warning | — |
16
16
  * | `skill/recommended-packs-valid` | warning | — |
17
17
  *
18
- * The last two come from `catalog/shared/recommended-packs-rules.ts`; every
19
- * non-pack catalog applies the same pair against its own manifest.
18
+ * The `skill.json` rules are the shared manifest envelope (`./skill/envelope.ts`),
19
+ * interleaved with the skill content rules. They apply to native skills only;
20
+ * a non-native skill carries no manifest, so they produce no findings for it.
20
21
  *
21
- * All ship `kind: "advisory"`. Native-vs-non-native applicability is
22
- * expressed via `check` early-return (no separate `applies` predicate); see
23
- * each rule's module for the guard.
22
+ * All ship `kind: "advisory"`.
24
23
  *
25
24
  * @experimental This API is unstable and may change without notice.
26
25
  * @packageDocumentation
27
26
  */
28
27
  import { skillMdPresentRule } from "./skill/skill-md-present.js";
29
- import { manifestPresentRule } from "./skill/manifest-present.js";
28
+ import { skillEnvelopeRules } from "./skill/envelope.js";
30
29
  import { frontmatterParseableRule } from "./skill/frontmatter-parseable.js";
31
30
  import { frontmatterStandardValidRule } from "./skill/frontmatter-standard-valid.js";
32
- import { manifestSchemaValidRule } from "./skill/manifest-schema-valid.js";
33
- import { manifestKeysRecognizedRule } from "./skill/manifest-keys-recognized.js";
34
- import { recommendedPacksValidRule } from "./skill/recommended-packs-valid.js";
35
- import { standaloneDeclarationValidRule } from "./skill/standalone-declaration-valid.js";
36
31
  /**
37
32
  * Ordered `skill/*` rule catalog. Declaration order is the evaluation
38
33
  * order within a single `evaluateContexts` call (deterministic ordering is
@@ -42,12 +37,12 @@ import { standaloneDeclarationValidRule } from "./skill/standalone-declaration-v
42
37
  */
43
38
  export const skillRules = [
44
39
  skillMdPresentRule,
45
- manifestPresentRule,
40
+ skillEnvelopeRules.manifestPresent,
46
41
  frontmatterParseableRule,
47
42
  frontmatterStandardValidRule,
48
- manifestSchemaValidRule,
49
- manifestKeysRecognizedRule,
50
- standaloneDeclarationValidRule,
51
- recommendedPacksValidRule,
43
+ skillEnvelopeRules.manifestSchemaValid,
44
+ skillEnvelopeRules.manifestKeysRecognized,
45
+ skillEnvelopeRules.standaloneDeclarationValid,
46
+ skillEnvelopeRules.recommendedPacksValid,
52
47
  ];
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGludC9jYXRhbG9nL3NraWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUlILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXpGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBOEM7SUFDbkUsa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQix3QkFBd0I7SUFDeEIsNEJBQTRCO0lBQzVCLHVCQUF1QjtJQUN2QiwwQkFBMEI7SUFDMUIsOEJBQThCO0lBQzlCLHlCQUF5QjtDQUMxQixDQUFDIn0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGludC9jYXRhbG9nL3NraWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBSUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFckY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUE4QztJQUNuRSxrQkFBa0I7SUFDbEIsa0JBQWtCLENBQUMsZUFBZTtJQUNsQyx3QkFBd0I7SUFDeEIsNEJBQTRCO0lBQzVCLGtCQUFrQixDQUFDLG1CQUFtQjtJQUN0QyxrQkFBa0IsQ0FBQyxzQkFBc0I7SUFDekMsa0JBQWtCLENBQUMsMEJBQTBCO0lBQzdDLGtCQUFrQixDQUFDLHFCQUFxQjtDQUN6QyxDQUFDIn0=
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * `subagent/*` manifest envelope — see `../shared/envelope-rules.ts`.
3
3
  */
4
- import type { SubagentRuleContext } from "../../context.js";
5
- export declare const subagentEnvelopeRules: import("../shared/envelope-rules.js").ManifestEnvelopeRules<SubagentRuleContext<import("../../context.js").SubagentContent>>;
4
+ import type { ManifestRuleContext, SubagentContent } from "../../context.js";
5
+ export declare const subagentEnvelopeRules: import("../shared/envelope-rules.js").ManifestEnvelopeRules<ManifestRuleContext<SubagentContent>>;
6
6
  //# sourceMappingURL=envelope.d.ts.map
@@ -1,15 +1,16 @@
1
1
  /**
2
2
  * `subagent/*` manifest envelope — see `../shared/envelope-rules.ts`.
3
3
  */
4
- import { MANIFEST_FILENAME, SubagentManifestSchema, } from "@agentxm/extension-model/unstable/subagents/manifest-schema";
4
+ import { SubagentManifestSchema } from "@agentxm/extension-model/unstable/subagents/manifest-schema";
5
5
  import { makeManifestEnvelopeRules } from "../shared/envelope-rules.js";
6
+ import { manifestFilenameForType } from "@agentxm/extension-model/unstable/extensions/common";
6
7
  export const subagentEnvelopeRules = makeManifestEnvelopeRules({
7
8
  namespace: "subagent",
8
- manifestFile: MANIFEST_FILENAME,
9
+ manifestFile: manifestFilenameForType("subagent"),
9
10
  schema: SubagentManifestSchema,
10
11
  manifestJson: (context) => context.subject.subagentJson,
11
12
  presentDescription: "Subagents include a root subagent.json manifest.",
12
13
  presentMissingMessage: "subagent.json is missing. Create the identity fields and either a described portable core or explicit native implementations.",
13
14
  schemaDescription: "subagent.json defines a valid subagent manifest.",
14
15
  });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52ZWxvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGludC9jYXRhbG9nL3N1YmFnZW50L2VudmVsb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixzQkFBc0IsR0FDdkIsTUFBTSw2REFBNkQsQ0FBQztBQUVyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyx5QkFBeUIsQ0FBQztJQUM3RCxTQUFTLEVBQUUsVUFBVTtJQUNyQixZQUFZLEVBQUUsaUJBQWlCO0lBQy9CLE1BQU0sRUFBRSxzQkFBc0I7SUFDOUIsWUFBWSxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZO0lBQzVFLGtCQUFrQixFQUFFLGtEQUFrRDtJQUN0RSxxQkFBcUIsRUFDbkIsK0hBQStIO0lBQ2pJLGlCQUFpQixFQUFFLGtEQUFrRDtDQUN0RSxDQUFDLENBQUMifQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52ZWxvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGludC9jYXRhbG9nL3N1YmFnZW50L2VudmVsb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFFckcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFOUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcseUJBQXlCLENBQUM7SUFDN0QsU0FBUyxFQUFFLFVBQVU7SUFDckIsWUFBWSxFQUFFLHVCQUF1QixDQUFDLFVBQVUsQ0FBQztJQUNqRCxNQUFNLEVBQUUsc0JBQXNCO0lBQzlCLFlBQVksRUFBRSxDQUFDLE9BQTZDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWTtJQUM3RixrQkFBa0IsRUFBRSxrREFBa0Q7SUFDdEUscUJBQXFCLEVBQ25CLCtIQUErSDtJQUNqSSxpQkFBaUIsRUFBRSxrREFBa0Q7Q0FDdEUsQ0FBQyxDQUFDIn0=
@@ -1,4 +1,4 @@
1
- import type { SubagentRuleContext } from "../context.js";
1
+ import type { ManifestRuleContext, SubagentContent } from "../context.js";
2
2
  import type { LintRule } from "../rule.js";
3
- export declare const subagentRules: ReadonlyArray<LintRule<SubagentRuleContext>>;
3
+ export declare const subagentRules: ReadonlyArray<LintRule<ManifestRuleContext<SubagentContent>>>;
4
4
  //# sourceMappingURL=subagent.d.ts.map
@@ -601,6 +601,18 @@ export const lintCatalogRuleMetadata = defineLintCatalog([
601
601
  group: "workspace",
602
602
  views: filesystemView,
603
603
  },
604
+ {
605
+ id: "workspace/native-output-links-resolve",
606
+ defaultSeverity: "warning",
607
+ group: "workspace",
608
+ views: filesystemView,
609
+ },
610
+ {
611
+ id: "workspace/native-outputs-readable",
612
+ defaultSeverity: "warning",
613
+ group: "workspace",
614
+ views: filesystemView,
615
+ },
604
616
  {
605
617
  id: "workspace/user-outputs-have-settings",
606
618
  defaultSeverity: "warning",
@@ -688,4 +700,4 @@ export const lintCatalogRuleMetadata = defineLintCatalog([
688
700
  ]);
689
701
  /** Every accepted lint-rule identity, in catalog/reporting order. */
690
702
  export const allLintCatalogRuleIds = Object.freeze(lintCatalogRuleMetadata.map((entry) => entry.id));
691
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saW50L2NhdGFsb2ctbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQW9CSCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBVSxDQUFDLENBQUM7QUFDdEUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBVSxDQUFDLENBQUM7QUFFOUQsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixPQUFnQixFQUNoQixFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzVCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixLQUFLLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxFQUFFLCtCQUErQixLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pGLE1BQU0sSUFBSSxLQUFLLENBQUMs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RUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsZ0NBQWdDO1FBQ3BDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUseUJBQXlCO1FBQzdCLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsK0JBQStCO1FBQ25DLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsK0JBQStCO1FBQ25DLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNkJBQTZCO1FBQ2pDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUseUJBQXlCO1FBQzdCLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsOEJBQThCO1FBQ2xDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNkJBQTZCO1FBQ2pDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUseUJBQXlCO1FBQzdCLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xC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QUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUscUNBQXFDO1FBQ3pDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0NBQXdDO1FBQzVDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsMENBQTBDO1FBQzlDLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsc0NBQXNDO1FBQzFDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNENBQTRDO1FBQ2hELGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsK0JBQStCO1FBQ25DLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNkJBQTZCO1FBQ2pDLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsZ0NBQWdDO1FBQ3BDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0NBQXdDO1FBQzVDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsZ0NBQWdDO1FBQ3BDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUscUNBQXFDO1FBQ3pDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsMkNBQTJDO1FBQy9DLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0NBQXdDO1FBQzVDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsc0NBQXNDO1FBQzFDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsc0NBQXNDO1FBQzFDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUscUNBQXFDO1FBQ3pDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsb0NBQW9DO1FBQ3hDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsOENBQThDO1FBQ2xELGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0NBQXdDO1FBQzVDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsaUNBQWlDO1FBQ3JDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsc0NBQXNDO1FBQzFDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsa0NBQWtDO1FBQ3RDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNEJBQTRCO1FBQ2hDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsbUNBQW1DO1FBQ3ZDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsa0NBQWtDO1FBQ3RDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsb0NBQW9DO1FBQ3hDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0NBQytDLENBQUMsQ0FBQztBQUVwRCxxRUFBcUU7QUFDckUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDaEQsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQ2pELENBQUMifQ==
703
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saW50L2NhdGFsb2ctbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQW9CSCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBVSxDQUFDLENBQUM7QUFDdEUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBVSxDQUFDLENBQUM7QUFFOUQsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixPQUFnQixFQUNoQixFQUFFO0lBQ0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzVCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixLQUFLLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxFQUFFLCtCQUErQixLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pGLE1BQU0sSUFBSSxLQUFLLENBQUMs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RUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsZ0NBQWdDO1FBQ3BDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUseUJBQXlCO1FBQzdCLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsK0JBQStCO1FBQ25DLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsK0JBQStCO1FBQ25DLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNkJBQTZCO1FBQ2pDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUseUJBQXlCO1FBQzdCLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsOEJBQThCO1FBQ2xDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNkJBQTZCO1FBQ2pDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUseUJBQXlCO1FBQzdCLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xC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QUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUscUNBQXFDO1FBQ3pDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0NBQXdDO1FBQzVDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsMENBQTBDO1FBQzlDLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsc0NBQXNDO1FBQzFDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNENBQTRDO1FBQ2hELGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsK0JBQStCO1FBQ25DLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNkJBQTZCO1FBQ2pDLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsZ0NBQWdDO1FBQ3BDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0NBQXdDO1FBQzVDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsZ0NBQWdDO1FBQ3BDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUscUNBQXFDO1FBQ3pDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsMkNBQTJDO1FBQy9DLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0NBQXdDO1FBQzVDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsbUNBQW1DO1FBQ3ZDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsc0NBQXNDO1FBQzFDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsc0NBQXNDO1FBQzFDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUscUNBQXFDO1FBQ3pDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsb0NBQW9DO1FBQ3hDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsOENBQThDO1FBQ2xELGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsd0NBQXdDO1FBQzVDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsaUNBQWlDO1FBQ3JDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsc0NBQXNDO1FBQzFDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsa0NBQWtDO1FBQ3RDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsNEJBQTRCO1FBQ2hDLGVBQWUsRUFBRSxTQUFTO1FBQzFCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsbUNBQW1DO1FBQ3ZDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsa0NBQWtDO1FBQ3RDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsb0NBQW9DO1FBQ3hDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxjQUFjO0tBQ3RCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUNBQXVDO1FBQzNDLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxTQUFTO0tBQ2pCO0NBQytDLENBQUMsQ0FBQztBQUVwRCxxRUFBcUU7QUFDckUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDaEQsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQ2pELENBQUMifQ==