@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
@@ -3,30 +3,19 @@ import * as Effect from "effect/Effect";
3
3
  import * as Result from "effect/Result";
4
4
  import * as Schema from "effect/Schema";
5
5
  import * as SchemaIssue from "effect/SchemaIssue";
6
- import { ExtensionNameSchema, ExtensionTypeSchema, extensionTypes, } from "@agentxm/extension-model/unstable/extensions/common";
7
- import { HookManifestSchema, HOOK_MANIFEST_FILENAME, } from "@agentxm/extension-model/unstable/hooks/manifest-schema";
6
+ import * as Predicate from "effect/Predicate";
7
+ import { ExtensionNameSchema, ExtensionTypeSchema, manifestFilenameForType, } from "@agentxm/extension-model/unstable/extensions/common";
8
+ import { HookManifestSchema } from "@agentxm/extension-model/unstable/hooks/manifest-schema";
8
9
  import { HandleSchema } from "@agentxm/extension-model/unstable/extensions/handle";
9
- import { KnowledgeManifestSchema, KNOWLEDGE_MANIFEST_FILENAME, } from "@agentxm/extension-model/unstable/knowledge/manifest-schema";
10
- import { McpServerManifestSchema, MCP_SERVER_MANIFEST_FILENAME, } from "@agentxm/extension-model/unstable/mcps/manifest-schema";
11
- import { PACK_MANIFEST_FILENAME, PackManifestSchema, } from "@agentxm/extension-model/unstable/packs/manifest-schema";
12
- import { RuleManifestSchema, RULE_MANIFEST_FILENAME, } from "@agentxm/extension-model/unstable/rules/manifest-schema";
13
- import { SkillManifestSchema, MANIFEST_FILENAME as SKILL_MANIFEST_FILENAME, } from "@agentxm/extension-model/unstable/skills/manifest-schema";
14
- import { SubagentManifestSchema, MANIFEST_FILENAME as SUBAGENT_MANIFEST_FILENAME, } from "@agentxm/extension-model/unstable/subagents/manifest-schema";
10
+ import { KnowledgeManifestSchema } from "@agentxm/extension-model/unstable/knowledge/manifest-schema";
11
+ import { McpServerManifestSchema } from "@agentxm/extension-model/unstable/mcps/manifest-schema";
12
+ import { PackManifestSchema } from "@agentxm/extension-model/unstable/packs/manifest-schema";
13
+ import { RuleManifestSchema } from "@agentxm/extension-model/unstable/rules/manifest-schema";
14
+ import { SkillManifestSchema } from "@agentxm/extension-model/unstable/skills/manifest-schema";
15
+ import { SubagentManifestSchema } from "@agentxm/extension-model/unstable/subagents/manifest-schema";
15
16
  import { VersionSchema } from "@agentxm/extension-model/unstable/version-constraints";
16
17
  export class ManifestError extends Data.TaggedError("ManifestError") {
17
18
  }
18
- export const MANIFEST_FILENAME_BY_TYPE = {
19
- skill: SKILL_MANIFEST_FILENAME,
20
- "mcp-server": MCP_SERVER_MANIFEST_FILENAME,
21
- subagent: SUBAGENT_MANIFEST_FILENAME,
22
- pack: PACK_MANIFEST_FILENAME,
23
- rule: RULE_MANIFEST_FILENAME,
24
- hook: HOOK_MANIFEST_FILENAME,
25
- knowledge: KNOWLEDGE_MANIFEST_FILENAME,
26
- };
27
- export const MANIFEST_FILENAMES = new Set(Object.values(MANIFEST_FILENAME_BY_TYPE));
28
- export const extensionTypeForManifestFilename = (fileName) => extensionTypes.find((type) => MANIFEST_FILENAME_BY_TYPE[type] === fileName);
29
- export const manifestFilenameForType = (type) => MANIFEST_FILENAME_BY_TYPE[type];
30
19
  export const ManifestIdentitySchema = Schema.Struct({
31
20
  owner: HandleSchema.pipe(Schema.annotateKey({ messageMissingKey: "owner is required" })),
32
21
  type: ExtensionTypeSchema.pipe(Schema.annotateKey({ messageMissingKey: "type is required" })),
@@ -47,10 +36,7 @@ export const MANIFEST_SCHEMA_BY_TYPE = {
47
36
  knowledge: KnowledgeManifestSchema,
48
37
  };
49
38
  export const manifestSchemaForType = (type) => MANIFEST_SCHEMA_BY_TYPE[type];
50
- const hasOwnField = (value, field) => typeof value === "object" &&
51
- value !== null &&
52
- !Array.isArray(value) &&
53
- Object.hasOwn(value, field);
39
+ const hasOwnField = (value, field) => Predicate.isObject(value) && Object.hasOwn(value, field);
54
40
  const purlHasVersion = (value) => {
55
41
  const queryStart = value.search(/[?#]/);
56
42
  const comparable = queryStart === -1 ? value : value.slice(0, queryStart);
@@ -77,7 +63,7 @@ const classifyCompanionPackageManifestError = (raw) => {
77
63
  };
78
64
  }
79
65
  for (const entry of packages) {
80
- if (typeof entry !== "object" || entry === null || Array.isArray(entry)) {
66
+ if (!Predicate.isObject(entry)) {
81
67
  return {
82
68
  code: "companion_package_invalid",
83
69
  detail: "Manifest packages entries must be objects with purl and optional versionRange fields.",
@@ -195,4 +181,4 @@ export const validateDeclaredManifestAlignment = (declaredIdentity, manifest) =>
195
181
  }
196
182
  return Result.void;
197
183
  };
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2luZy9tYW5pZmVzdC1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixjQUFjLEdBR2YsTUFBTSxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHNCQUFzQixHQUN2QixNQUFNLHlEQUF5RCxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxxREFBcUQsQ0FBQztBQUNoRyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDJCQUEyQixHQUM1QixNQUFNLDZEQUE2RCxDQUFDO0FBQ3JFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsNEJBQTRCLEdBQzdCLE1BQU0sd0RBQXdELENBQUM7QUFDaEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsR0FDbkIsTUFBTSx5REFBeUQsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHNCQUFzQixHQUN2QixNQUFNLHlEQUF5RCxDQUFDO0FBQ2pFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLElBQUksdUJBQXVCLEdBQzdDLE1BQU0sMERBQTBELENBQUM7QUFDbEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixpQkFBaUIsSUFBSSwwQkFBMEIsR0FDaEQsTUFBTSw2REFBNkQsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLHVE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
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2luZy9tYW5pZmVzdC1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssU0FBUyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHVCQUF1QixHQUd4QixNQUFNLHFEQUFxRCxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxxREFBcUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLHVEQUF1RCxDQUFDO0FBR3BHLE1BQU0sT0FBTyxhQUFjLFNBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBY2pFO0NBQUc7QUFFTCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2xELEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDeEYsSUFBSSxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUM3RixPQUFPLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0NBQzlGLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDVixVQUFVLEVBQUUsa0JBQWtCO0lBQzlCLEtBQUssRUFBRSxtQkFBbUI7SUFDMUIsV0FBVyxFQUNULHlGQUF5RjtDQUM1RixDQUFDLENBQUM7QUFJSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxLQUFLLEVBQUUsbUJBQW1CO0lBQzFCLFlBQVksRUFBRSx1QkFBdUI7SUFDckMsUUFBUSxFQUFFLHNCQUFzQjtJQUNoQyxJQUFJLEVBQUUsa0JBQWtCO0lBQ3hCLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QixTQUFTLEVBQUUsdUJBQXVCO0NBQ1MsQ0FBQztBQUk5QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQW1CLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBcUI1RixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWMsRUFBRSxLQUFhLEVBQVcsRUFBRSxDQUM3RCxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRTNELE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUU7SUFDaEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxNQUFNLFVBQVUsR0FBRyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxPQUFPLFNBQVMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYSxFQUFzQixFQUFFO0lBQ3JELE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBYSxFQUFzQixFQUFFO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGLE1BQU0scUNBQXFDLEdBQUcsQ0FDNUMsR0FBWSxFQUNtRSxFQUFFO0lBQ2pGLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BFLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87WUFDTCxJQUFJLEVBQUUsMkJBQTJCO1lBQ2pDLE1BQU0sRUFBRSxrRUFBa0U7U0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTztnQkFDTCxJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxNQUFNLEVBQ0osdUZBQXVGO2FBQzFGLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QixPQUFPO2dCQUNMLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLE1BQU0sRUFBRSx1REFBdUQ7YUFDaEUsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLG9DQUFvQztnQkFDMUMsTUFBTSxFQUNKLG9GQUFvRjthQUN2RixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuRSxPQUFPO2dCQUNMLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLE1BQU0sRUFBRSx1REFBdUQ7YUFDaEUsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxZQUFZLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM1RixJQUFJLFdBQVcsS0FBSyxTQUFTLElBQUksV0FBVyxLQUFLLFNBQVMsSUFBSSxXQUFXLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDMUYsT0FBTztnQkFDTCxJQUFJLEVBQUUsbUNBQW1DO2dCQUN6QyxNQUFNLEVBQUUsMkVBQTJFO2FBQ3BGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELCtFQUErRTtJQUMvRSw0RUFBNEU7SUFDNUUsNERBQTREO0lBQzVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQzlDLFFBQWdCLEVBQ2hCLEdBQVksRUFDd0IsRUFBRTtJQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFFcEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixJQUFJLGFBQWEsQ0FBQztRQUNoQixJQUFJLEVBQUUseUJBQXlCO1FBQy9CLE1BQU0sRUFBRSxrQkFBa0IsUUFBUSxvRUFBb0U7S0FDdkcsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FDN0IsS0FBOEIsRUFDMEMsRUFBRSxDQUMxRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNsQixNQUFNLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU3RCxNQUFNLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUM5RCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUNMLFVBQVUsS0FBSyxnQkFBZ0I7WUFDL0IsVUFBVSxDQUFDLFdBQVcsRUFBRSxLQUFLLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUM1RCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDO1lBQzlCLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsTUFBTSxFQUFFLDJCQUEyQixnQkFBZ0IsOEJBQThCO1NBQ2xGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMvQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksYUFBYSxDQUFDO1lBQzlCLElBQUksRUFBRSxtQkFBbUI7WUFDekIsTUFBTSxFQUFFLGdEQUFnRCxLQUFLLENBQUMsSUFBSSxNQUFNLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7U0FDM0ksQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWhELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRixJQUFJLENBQ0wsQ0FBQyxJQUFJLENBQ0osTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLEVBQUUsQ0FDSCxJQUFJLGFBQWEsQ0FBQztRQUNoQixJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLE1BQU0sRUFBRSxrQkFBa0IsYUFBYSxDQUFDLFFBQVEsMEJBQTBCO0tBQzNFLENBQUMsQ0FDTCxDQUNGLENBQUM7SUFFRixLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRixNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuRixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxxQkFBcUIsR0FBRyxxQ0FBcUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1RSxPQUFPLElBQUksYUFBYSxDQUFDO1lBQ3ZCLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLElBQUkseUJBQXlCO1lBQzlELE1BQU0sRUFDSixxQkFBcUIsRUFBRSxNQUFNO2dCQUM3QixrQkFBa0IsYUFBYSxDQUFDLFFBQVEsNkJBQTZCLEtBQUssQ0FBQyxJQUFJLG1CQUFtQjtZQUNwRyxPQUFPLEVBQUUsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUN6RCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNyRixNQUFNLENBQUMsUUFBUSxDQUNiLEdBQUcsRUFBRSxDQUNILElBQUksYUFBYSxDQUFDO1FBQ2hCLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsTUFBTSxFQUFFLGtCQUFrQixhQUFhLENBQUMsUUFBUSxxRUFBcUU7S0FDdEgsQ0FBQyxDQUNMLENBQ0YsQ0FBQztJQUVGLE9BQU87UUFDTCxRQUFRO1FBQ1IsR0FBRyxFQUFFLE1BQU07UUFDWCxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7S0FDakMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUwsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsQ0FDL0MsZ0JBQXlDLEVBQ3pDLFFBQTBCLEVBQ1UsRUFBRTtJQUN0QyxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7SUFFaEMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLGdCQUFnQixDQUFDLElBQUksZUFBZSxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlDLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLGdCQUFnQixDQUFDLEtBQUssZUFBZSxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLGdCQUFnQixDQUFDLElBQUksZUFBZSxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELFVBQVUsQ0FBQyxJQUFJLENBQ2Isc0JBQXNCLGdCQUFnQixDQUFDLE9BQU8sZUFBZSxRQUFRLENBQUMsT0FBTyxHQUFHLENBQ2pGLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsSUFBSSxhQUFhLENBQUM7WUFDaEIsSUFBSSxFQUFFLDRCQUE0QjtZQUNsQyxNQUFNLEVBQUUsNkRBQTZELFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFDN0YsT0FBTyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFO1NBQ3hDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztBQUNyQixDQUFDLENBQUMifQ==
@@ -30,6 +30,7 @@ export const buildZip = (entries) => {
30
30
  else {
31
31
  compressedData = entry.content;
32
32
  }
33
+ const crc32 = zlib.crc32(entry.content);
33
34
  const localBuf = new ArrayBuffer(30);
34
35
  const localView = new DataView(localBuf);
35
36
  writeUint32LE(localView, 0, LOCAL_FILE_HEADER_SIG);
@@ -38,7 +39,7 @@ export const buildZip = (entries) => {
38
39
  writeUint16LE(localView, 8, compressionMethod);
39
40
  writeUint16LE(localView, 10, 0);
40
41
  writeUint16LE(localView, 12, 0);
41
- writeUint32LE(localView, 14, 0);
42
+ writeUint32LE(localView, 14, crc32);
42
43
  writeUint32LE(localView, 18, compressedData.length);
43
44
  writeUint32LE(localView, 22, entry.content.length);
44
45
  writeUint16LE(localView, 26, fileNameBytes.length);
@@ -55,7 +56,7 @@ export const buildZip = (entries) => {
55
56
  writeUint16LE(cdirView, 10, compressionMethod);
56
57
  writeUint16LE(cdirView, 12, 0);
57
58
  writeUint16LE(cdirView, 14, 0);
58
- writeUint32LE(cdirView, 16, 0);
59
+ writeUint32LE(cdirView, 16, crc32);
59
60
  writeUint32LE(cdirView, 20, compressedData.length);
60
61
  writeUint32LE(cdirView, 24, entry.content.length);
61
62
  writeUint16LE(cdirView, 28, fileNameBytes.length);
@@ -114,4 +115,4 @@ export const buildDecompressionBombZip = (uncompressedSize, compressedSize, entr
114
115
  };
115
116
  export const buildMalformedZip = () => new Uint8Array([0x00, 0x01, 0x02, 0x03, 0x04, 0x05]);
116
117
  export const textContent = (text) => textEncoder.encode(text);
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC16aXAtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdpbmcvdGVzdC16aXAtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQztBQVNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBRXRDLE1BQU0scUJBQXFCLEdBQUcsVUFBVSxDQUFDO0FBQ3pDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUNuQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFFNUIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFhLEVBQUUsTUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQ3JFLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVyQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQWEsRUFBRSxNQUFjLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FDckUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXJDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBb0IsRUFBYyxFQUFFO0lBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE1BQU0s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
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC16aXAtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdpbmcvdGVzdC16aXAtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQztBQVNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBRXRDLE1BQU0scUJBQXFCLEdBQUcsVUFBVSxDQUFDO0FBQ3pDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUNuQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFFNUIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFhLEVBQUUsTUFBYyxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQ3JFLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVyQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQWEsRUFBRSxNQUFjLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FDckUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXJDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBb0IsRUFBYyxFQUFFO0lBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE1BQU0s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
package/package.json CHANGED
@@ -4,18 +4,19 @@
4
4
  "url": "https://github.com/agentxm/axm/issues"
5
5
  },
6
6
  "dependencies": {
7
- "@agentxm/extension-model": "^0.49.2",
8
- "effect": "4.0.5",
7
+ "@agentxm/extension-model": "^0.50.0",
9
8
  "smol-toml": "^1.9.1",
10
9
  "yaml": "^2.9.1"
11
10
  },
12
11
  "description": "AXM extension content behavior: skill and subagent content parsing, Knowledge bundle inspection and search, the lint rule catalog, and archive and manifest validation shared by the axm CLI and the AgentXM Registry. Unstable and unsupported — use the axm.sh CLI.",
13
12
  "devDependencies": {
14
- "@agentxm/specification-metadata": "^0.49.2",
13
+ "@agentxm/specification-metadata": "^0.50.0",
14
+ "@agentxm/test-reporting": "0.0.1",
15
15
  "@effect/platform-node": "4.0.5",
16
16
  "@effect/vitest": "4.0.5",
17
17
  "@fast-check/vitest": "^0.5.0",
18
18
  "@typescript/native": "npm:typescript@^7.0.2",
19
+ "effect": "4.0.5",
19
20
  "typescript": "npm:@typescript/typescript6@^6.0.2",
20
21
  "vitest": "^5.0.5"
21
22
  },
@@ -50,6 +51,9 @@
50
51
  "nx": {
51
52
  "includedScripts": []
52
53
  },
54
+ "peerDependencies": {
55
+ "effect": "^4.0.5"
56
+ },
53
57
  "publishConfig": {
54
58
  "access": "public"
55
59
  },
@@ -60,5 +64,5 @@
60
64
  },
61
65
  "sideEffects": false,
62
66
  "type": "module",
63
- "version": "0.49.2"
67
+ "version": "0.50.0"
64
68
  }
@@ -1,28 +0,0 @@
1
- /**
2
- * `pack/manifest-keys-recognized` — `pack.json` contains only keys
3
- * declared by `PackManifestSchema`.
4
- *
5
- * The paired `-schema-valid` rule ignores excess properties by construction
6
- * (`onExcessProperty: "ignore"`); this rule rejects them so publish never
7
- * silently drops unrecognized manifest data.
8
- *
9
- * A forbidden `packs:` dependency section (ONTOLOGY D015 "Cross-Domain
10
- * Pack Semantics") decodes as an unrecognized top-level key here
11
- * and surfaces at error severity here.
12
- *
13
- * Allowed-keys set is derived from `PackManifestSchema.fields` — no
14
- * copy-paste of field names. A schema gain (or rename) automatically updates
15
- * the allowlist.
16
- *
17
- * Early-return arm (no findings):
18
- *
19
- * - `subject.packJson === undefined` / non-object — nothing to enumerate;
20
- * `pack/manifest-present` owns the absence case.
21
- *
22
- * @experimental This API is unstable and may change without notice.
23
- * @packageDocumentation
24
- */
25
- import type { PackRuleContext } from "../../context.js";
26
- import type { AdvisoryRule } from "../../rule.js";
27
- export declare const manifestKeysRecognizedRule: AdvisoryRule<PackRuleContext>;
28
- //# sourceMappingURL=manifest-keys-recognized.d.ts.map
@@ -1,38 +0,0 @@
1
- /**
2
- * `pack/manifest-keys-recognized` — `pack.json` contains only keys
3
- * declared by `PackManifestSchema`.
4
- *
5
- * The paired `-schema-valid` rule ignores excess properties by construction
6
- * (`onExcessProperty: "ignore"`); this rule rejects them so publish never
7
- * silently drops unrecognized manifest data.
8
- *
9
- * A forbidden `packs:` dependency section (ONTOLOGY D015 "Cross-Domain
10
- * Pack Semantics") decodes as an unrecognized top-level key here
11
- * and surfaces at error severity here.
12
- *
13
- * Allowed-keys set is derived from `PackManifestSchema.fields` — no
14
- * copy-paste of field names. A schema gain (or rename) automatically updates
15
- * the allowlist.
16
- *
17
- * Early-return arm (no findings):
18
- *
19
- * - `subject.packJson === undefined` / non-object — nothing to enumerate;
20
- * `pack/manifest-present` owns the absence case.
21
- *
22
- * @experimental This API is unstable and may change without notice.
23
- * @packageDocumentation
24
- */
25
- import * as Effect from "effect/Effect";
26
- import { PackManifestSchema } from "@agentxm/extension-model/unstable/packs/manifest-schema";
27
- import { enumerateUnknownTopLevelKeys, structFieldKeys } from "../shared/schema-rule.js";
28
- const RULE_ID = "pack/manifest-keys-recognized";
29
- const PACK_JSON = "pack.json";
30
- const allowedKeys = structFieldKeys(PackManifestSchema);
31
- export const manifestKeysRecognizedRule = {
32
- id: RULE_ID,
33
- description: "pack.json uses only supported top-level fields.",
34
- kind: "advisory",
35
- severity: "error",
36
- check: (context) => Effect.succeed(enumerateUnknownTopLevelKeys(RULE_ID, "error", PACK_JSON, allowedKeys, context.subject.packJson)),
37
- };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3Qta2V5cy1yZWNvZ25pemVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnQvY2F0YWxvZy9wYWNrL21hbmlmZXN0LWtleXMtcmVjb2duaXplZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUd4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekYsTUFBTSxPQUFPLEdBQUcsK0JBQStCLENBQUM7QUFDaEQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBRTlCLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFrQztJQUN2RSxFQUFFLEVBQUUsT0FBTztJQUNYLFdBQVcsRUFBRSxpREFBaUQ7SUFDOUQsSUFBSSxFQUFFLFVBQVU7SUFDaEIsUUFBUSxFQUFFLE9BQU87SUFDakIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDakIsTUFBTSxDQUFDLE9BQU8sQ0FDWiw0QkFBNEIsQ0FDMUIsT0FBTyxFQUNQLE9BQU8sRUFDUCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUN6QixDQUNGO0NBQ0osQ0FBQyJ9
@@ -1,17 +0,0 @@
1
- /**
2
- * `pack/manifest-present` — packs must have a `pack.json` at the
3
- * pack root.
4
- *
5
- * Packs are registry-only at v1; every pack context is expected to expose a
6
- * manifest. Unlike `skill/manifest-present`, there is no native-vs-non-native
7
- * split — the rule applies to every pack context unconditionally.
8
- *
9
- * Advisory-only — scaffolding a manifest is `axm packs new` (a user-authored
10
- * action) per the lint design.
11
- *
12
- * @experimental This API is unstable and may change without notice.
13
- * @packageDocumentation
14
- */
15
- import type { PackRuleContext } from "../../context.js";
16
- export declare const manifestPresentRule: import("../../rule.ts").AdvisoryRule<PackRuleContext<import("../../context.js").PackContent>, never>;
17
- //# sourceMappingURL=manifest-present.d.ts.map
@@ -1,24 +0,0 @@
1
- /**
2
- * `pack/manifest-present` — packs must have a `pack.json` at the
3
- * pack root.
4
- *
5
- * Packs are registry-only at v1; every pack context is expected to expose a
6
- * manifest. Unlike `skill/manifest-present`, there is no native-vs-non-native
7
- * split — the rule applies to every pack context unconditionally.
8
- *
9
- * Advisory-only — scaffolding a manifest is `axm packs new` (a user-authored
10
- * action) per the lint design.
11
- *
12
- * @experimental This API is unstable and may change without notice.
13
- * @packageDocumentation
14
- */
15
- import { makeManifestPresentRule } from "../shared/manifest-present.js";
16
- const RULE_ID = "pack/manifest-present";
17
- const PACK_JSON = "pack.json";
18
- export const manifestPresentRule = makeManifestPresentRule({
19
- ruleId: RULE_ID,
20
- description: "Packs include a root pack.json manifest.",
21
- manifestFile: PACK_JSON,
22
- missingMessage: "pack.json is missing. Create pack.json with the required manifest fields (`owner`, `type`, `name`, `version`).",
23
- });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QtcHJlc2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50L2NhdGFsb2cvcGFjay9tYW5pZmVzdC1wcmVzZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFHSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsdUJBQXVCLENBQWtCO0lBQzFFLE1BQU0sRUFBRSxPQUFPO0lBQ2YsV0FBVyxFQUFFLDBDQUEwQztJQUN2RCxZQUFZLEVBQUUsU0FBUztJQUN2QixjQUFjLEVBQ1osZ0hBQWdIO0NBQ25ILENBQUMsQ0FBQyJ9
@@ -1,25 +0,0 @@
1
- /**
2
- * `pack/manifest-schema-valid` — `pack.json` conforms to
3
- * `PackManifestSchema`.
4
- *
5
- * Delegates to Effect Schema. Issues map 1:1 to findings via
6
- * `issuesToFindings`.
7
- *
8
- * Early-return arm (no findings):
9
- *
10
- * - `subject.packJson === undefined` — manifest is absent (covered by
11
- * `pack/manifest-present`).
12
- *
13
- * Dependency-map FQN grammar and `VersionRange` decode arms are owned by
14
- * `PackManifestSchema` itself — the dependency sections are typed
15
- * `Record<FQN, VersionRange>` so unknown FQNs, malformed grammar, and
16
- * bad semver ranges surface as normal schema issues through the shared
17
- * `schemaDecodeFindings` plumbing.
18
- *
19
- * @experimental This API is unstable and may change without notice.
20
- * @packageDocumentation
21
- */
22
- import type { PackRuleContext } from "../../context.js";
23
- import type { AdvisoryRule } from "../../rule.js";
24
- export declare const manifestSchemaValidRule: AdvisoryRule<PackRuleContext>;
25
- //# sourceMappingURL=manifest-schema-valid.d.ts.map
@@ -1,33 +0,0 @@
1
- /**
2
- * `pack/manifest-schema-valid` — `pack.json` conforms to
3
- * `PackManifestSchema`.
4
- *
5
- * Delegates to Effect Schema. Issues map 1:1 to findings via
6
- * `issuesToFindings`.
7
- *
8
- * Early-return arm (no findings):
9
- *
10
- * - `subject.packJson === undefined` — manifest is absent (covered by
11
- * `pack/manifest-present`).
12
- *
13
- * Dependency-map FQN grammar and `VersionRange` decode arms are owned by
14
- * `PackManifestSchema` itself — the dependency sections are typed
15
- * `Record<FQN, VersionRange>` so unknown FQNs, malformed grammar, and
16
- * bad semver ranges surface as normal schema issues through the shared
17
- * `schemaDecodeFindings` plumbing.
18
- *
19
- * @experimental This API is unstable and may change without notice.
20
- * @packageDocumentation
21
- */
22
- import { PackManifestSchema } from "@agentxm/extension-model/unstable/packs/manifest-schema";
23
- import { schemaDecodeFindings } from "../shared/schema-rule.js";
24
- const RULE_ID = "pack/manifest-schema-valid";
25
- const PACK_JSON = "pack.json";
26
- export const manifestSchemaValidRule = {
27
- id: RULE_ID,
28
- description: "pack.json defines a valid pack manifest.",
29
- kind: "advisory",
30
- severity: "error",
31
- check: (context) => schemaDecodeFindings(RULE_ID, "error", PACK_JSON, PackManifestSchema, context.subject.packJson),
32
- };
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3Qtc2NoZW1hLXZhbGlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnQvY2F0YWxvZy9wYWNrL21hbmlmZXN0LXNjaGVtYS12YWxpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFJSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRSxNQUFNLE9BQU8sR0FBRyw0QkFBNEIsQ0FBQztBQUM3QyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWtDO0lBQ3BFLEVBQUUsRUFBRSxPQUFPO0lBQ1gsV0FBVyxFQUFFLDBDQUEwQztJQUN2RCxJQUFJLEVBQUUsVUFBVTtJQUNoQixRQUFRLEVBQUUsT0FBTztJQUNqQixLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNqQixvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztDQUNsRyxDQUFDIn0=
@@ -1,56 +0,0 @@
1
- /**
2
- * Platform-backed `PackFileAccessor` for `axm lint`.
3
- *
4
- * Maps accessor-relative posix paths to on-disk absolute paths rooted at
5
- * the caller-supplied pack-root directory. Layout conventions per
6
- * the lint design "Pack accessor root":
7
- *
8
- * - **Registry-installed:**
9
- * `<workspaceRoot>/agent_extensions/<@owner>/packs/<sanitized-name>/`
10
- *
11
- * Packs are registry-only at v1 — there is no non-native variant. The caller
12
- * (`buildPackRuleContexts` or the CLI entry point) picks the root from
13
- * `computePackPathsForLayout` in `@agentxm/workspace-kernel/workspace-state`.
14
- *
15
- * The `pack.json` sits directly under `canonicalPath`; there is no
16
- * `src/` subdirectory like skills have — the pack install operation in
17
- * `@agentxm/extension-kinds/packs` owns the authoritative layout.
18
- *
19
- * Bounds enforcement:
20
- *
21
- * - No `..` segments in accessor-relative paths.
22
- * - No absolute paths (posix or Windows drive letters).
23
- * - Resolved absolute paths are verified to stay under the accessor root.
24
- *
25
- * The accessor is built via a factory that captures a pre-resolved
26
- * `FileSystem.FileSystem` + `Path.Path` services and an absolute root, so
27
- * `PackFileAccessor` stays Layer-free at rule-evaluation time (per
28
- * `lint-engine` spec "Rule contexts expose narrow caller-bound accessors").
29
- * It mirrors the VFT-backed accessor in `./vft.ts`; the two are the only
30
- * `PackFileAccessor` implementations, one for on-disk roots and one for an
31
- * extracted archive.
32
- *
33
- * @experimental This API is unstable and may change without notice.
34
- * @packageDocumentation
35
- */
36
- import type * as FileSystem from "effect/FileSystem";
37
- import type * as Path from "effect/Path";
38
- import type { PackFileAccessor } from "../../context.js";
39
- /**
40
- * Platform services needed by the platform-backed pack accessor.
41
- */
42
- export interface PackAccessorPlatform {
43
- readonly fs: FileSystem.FileSystem;
44
- readonly path: Path.Path;
45
- }
46
- /**
47
- * Build a platform-backed `PackFileAccessor` rooted at `absoluteRoot`.
48
- *
49
- * `absoluteRoot` SHOULD be the absolute path to the pack root directory
50
- * (`canonicalPath` from `computePackPathsForLayout` in
51
- * `@agentxm/workspace-kernel/workspace-state`).
52
- *
53
- * @experimental This API is unstable and may change without notice.
54
- */
55
- export declare const makePlatformPackFileAccessor: (platform: PackAccessorPlatform, absoluteRoot: string) => PackFileAccessor;
56
- //# sourceMappingURL=platform.d.ts.map
@@ -1,93 +0,0 @@
1
- /**
2
- * Platform-backed `PackFileAccessor` for `axm lint`.
3
- *
4
- * Maps accessor-relative posix paths to on-disk absolute paths rooted at
5
- * the caller-supplied pack-root directory. Layout conventions per
6
- * the lint design "Pack accessor root":
7
- *
8
- * - **Registry-installed:**
9
- * `<workspaceRoot>/agent_extensions/<@owner>/packs/<sanitized-name>/`
10
- *
11
- * Packs are registry-only at v1 — there is no non-native variant. The caller
12
- * (`buildPackRuleContexts` or the CLI entry point) picks the root from
13
- * `computePackPathsForLayout` in `@agentxm/workspace-kernel/workspace-state`.
14
- *
15
- * The `pack.json` sits directly under `canonicalPath`; there is no
16
- * `src/` subdirectory like skills have — the pack install operation in
17
- * `@agentxm/extension-kinds/packs` owns the authoritative layout.
18
- *
19
- * Bounds enforcement:
20
- *
21
- * - No `..` segments in accessor-relative paths.
22
- * - No absolute paths (posix or Windows drive letters).
23
- * - Resolved absolute paths are verified to stay under the accessor root.
24
- *
25
- * The accessor is built via a factory that captures a pre-resolved
26
- * `FileSystem.FileSystem` + `Path.Path` services and an absolute root, so
27
- * `PackFileAccessor` stays Layer-free at rule-evaluation time (per
28
- * `lint-engine` spec "Rule contexts expose narrow caller-bound accessors").
29
- * It mirrors the VFT-backed accessor in `./vft.ts`; the two are the only
30
- * `PackFileAccessor` implementations, one for on-disk roots and one for an
31
- * extracted archive.
32
- *
33
- * @experimental This API is unstable and may change without notice.
34
- * @packageDocumentation
35
- */
36
- import * as Effect from "effect/Effect";
37
- /**
38
- * Build a platform-backed `PackFileAccessor` rooted at `absoluteRoot`.
39
- *
40
- * `absoluteRoot` SHOULD be the absolute path to the pack root directory
41
- * (`canonicalPath` from `computePackPathsForLayout` in
42
- * `@agentxm/workspace-kernel/workspace-state`).
43
- *
44
- * @experimental This API is unstable and may change without notice.
45
- */
46
- export const makePlatformPackFileAccessor = (platform, absoluteRoot) => {
47
- const { fs, path } = platform;
48
- const normalizedRoot = path.resolve(absoluteRoot);
49
- const resolveWithinRoot = (input) => {
50
- if (input === "" || input === "." || input === "./") {
51
- return { kind: "ok", absolute: normalizedRoot };
52
- }
53
- if (/^[a-z]:[\\/]/i.test(input) || input.startsWith("/") || input.startsWith("\\")) {
54
- return { kind: "escape" };
55
- }
56
- const normalized = input.replace(/\\/g, "/").replace(/^\.\//, "");
57
- for (const segment of normalized.split("/")) {
58
- if (segment === "..") {
59
- return { kind: "escape" };
60
- }
61
- }
62
- const absolute = path.resolve(normalizedRoot, normalized);
63
- if (absolute !== normalizedRoot && !absolute.startsWith(`${normalizedRoot}${path.sep}`)) {
64
- return { kind: "escape" };
65
- }
66
- return { kind: "ok", absolute };
67
- };
68
- const makeAccessError = (p, reason, message) => ({
69
- _tag: "FileAccessError",
70
- path: p,
71
- reason,
72
- message,
73
- });
74
- return {
75
- exists: (p) => {
76
- const resolved = resolveWithinRoot(p);
77
- if (resolved.kind !== "ok") {
78
- return Effect.succeed(false);
79
- }
80
- return fs.exists(resolved.absolute).pipe(Effect.catch(() => Effect.succeed(false)));
81
- },
82
- readBytes: (p) => {
83
- const resolved = resolveWithinRoot(p);
84
- if (resolved.kind === "escape") {
85
- return Effect.fail(makeAccessError(p, "path-escape", `path escapes the accessor root: ${p}`));
86
- }
87
- return fs
88
- .readFile(resolved.absolute)
89
- .pipe(Effect.mapError((cause) => makeAccessError(p, "read-error", `read failed at ${p}: ${String(cause)}`)));
90
- },
91
- };
92
- };
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGludC9jYXRhbG9nL3BhY2stYWNjZXNzb3IvcGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFFSCxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQW9CeEM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUMxQyxRQUE4QixFQUM5QixZQUFvQixFQUNGLEVBQUU7SUFDcEIsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVsRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBYSxFQUFpQixFQUFFO1FBQ3pELElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuRixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLEtBQUssTUFBTSxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVDLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNyQixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUQsSUFBSSxRQUFRLEtBQUssY0FBYyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3hGLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLENBQ3RCLENBQVMsRUFDVCxNQUFpQyxFQUNqQyxPQUFlLEVBQ0UsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxFQUFFLGlCQUEwQjtRQUNoQyxJQUFJLEVBQUUsQ0FBQztRQUNQLE1BQU07UUFDTixPQUFPO0tBQ1IsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1osTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMzQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMvQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLGVBQWUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUMxRSxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sRUFBRTtpQkFDTixRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztpQkFDM0IsSUFBSSxDQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN4QixlQUFlLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQzFFLENBQ0YsQ0FBQztRQUNOLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -1,85 +0,0 @@
1
- /**
2
- * VFT-backed `PackFileAccessor` for publish callers.
3
- *
4
- * A Virtual File Tree (VFT) is an in-memory representation of an extracted
5
- * archive — the registry publish pipeline extracts an upload into a VFT, then
6
- * passes that tree into Phase 4 decode/lint. The VFT's schema and bounds
7
- * (max size, file count, path depth) are owned by the registry extract phase
8
- * (Phase 4 concern); this accessor treats the tree as a read-only
9
- * `path -> Uint8Array` map and enforces its own rooted-read + no-`..`-escape
10
- * invariants at the rule boundary.
11
- *
12
- * Bounds enforcement here:
13
- *
14
- * - Paths are normalized to posix, `./` prefixes are stripped.
15
- * - Empty path resolves to the accessor root itself.
16
- * - Any path containing a `..` segment raises `FileAccessError {
17
- * reason: "path-escape" }` from `readBytes` and resolves to `false` from
18
- * `exists`.
19
- * - Absolute paths (starting with `/` or a Windows drive letter) are
20
- * treated as escape attempts.
21
- *
22
- * Mirrors the skill VFT accessor (`../skill-accessor/vft.ts`). The VFTNode
23
- * interface is intentionally the same so a publish caller can extract a
24
- * single archive once and pass the same tree to either accessor factory.
25
- *
26
- * @experimental This API is unstable and may change without notice.
27
- * @packageDocumentation
28
- */
29
- import * as Effect from "effect/Effect";
30
- /**
31
- * Build a VFT-backed `PackFileAccessor` rooted at the tree's root.
32
- *
33
- * Callers that root the pack at a sub-path of the archive should pre-strip
34
- * that sub-path before constructing the tree — the accessor enforces no
35
- * `..` escape above the root it was given.
36
- *
37
- * @experimental This API is unstable and may change without notice.
38
- */
39
- export const makeVftPackFileAccessor = (tree) => {
40
- return {
41
- exists: (path) => {
42
- const normalized = normalizeAndCheck(path);
43
- if (normalized.kind !== "ok") {
44
- return Effect.succeed(false);
45
- }
46
- return Effect.succeed(tree.hasFile(normalized.path));
47
- },
48
- readBytes: (path) => {
49
- const normalized = normalizeAndCheck(path);
50
- if (normalized.kind === "escape") {
51
- return failFileAccess(path, "path-escape", `path escapes the accessor root: ${path}`);
52
- }
53
- const bytes = tree.getFile(normalized.path);
54
- if (bytes === undefined) {
55
- return failFileAccess(path, "read-error", `file not found at ${path}`);
56
- }
57
- return Effect.succeed(bytes);
58
- },
59
- };
60
- };
61
- const normalizeAndCheck = (path) => {
62
- if (path === "" || path === "." || path === "./") {
63
- return { kind: "ok", path: "" };
64
- }
65
- // Windows drive letters (`C:/`) and absolute posix paths both count as
66
- // escape attempts at a pack-rooted accessor.
67
- if (/^[a-z]:[\\/]/i.test(path) || path.startsWith("/") || path.startsWith("\\")) {
68
- return { kind: "escape" };
69
- }
70
- const normalized = path.replace(/\\/g, "/").replace(/^\.\//, "");
71
- const segments = normalized.split("/");
72
- for (const segment of segments) {
73
- if (segment === "..") {
74
- return { kind: "escape" };
75
- }
76
- }
77
- return { kind: "ok", path: normalized };
78
- };
79
- const failFileAccess = (path, reason, message) => Effect.fail({
80
- _tag: "FileAccessError",
81
- path,
82
- reason,
83
- message,
84
- });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnQvY2F0YWxvZy9wYWNrLWFjY2Vzc29yL3ZmdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUE0QnhDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxJQUFpQixFQUFvQixFQUFFO0lBQzdFLE9BQU87UUFDTCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNmLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLG1DQUFtQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7WUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN6RSxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBUUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBbUIsRUFBRTtJQUMxRCxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCx1RUFBdUU7SUFDdkUsNkNBQTZDO0lBQzdDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQ3JCLElBQVksRUFDWixNQUFpQyxFQUNqQyxPQUFlLEVBQzZCLEVBQUUsQ0FDOUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNWLElBQUksRUFBRSxpQkFBMEI7SUFDaEMsSUFBSTtJQUNKLE1BQU07SUFDTixPQUFPO0NBQ1IsQ0FBQyxDQUFDIn0=